安装

pip install pytest

运行

pytest,main(["-s","-v","test.py"])

命名规则

  • 函数 :以test开头;
  • 类 : 以Test开头;
  • 方法:以test开头;

setup/teardown

模块级

a.setup_module
b.teardown_module

函数级

a.setup_function
b.teardown_function

类级

a.setup_class
b.teardown_class

类中方法级

a.setup_method
b.teardown_method

配置文件

pytest.ini :文件名固定

注意:
a. 文件名:必须指定成pytest.ini,不能使用其他名称;
b. 配置文件中不能包含中文;
c. 位置:必须存放在项目根目录,否则不生效;

[pytest]
addopts = -s -v
testpaths = ./scripts
python_files = test_*.py
python_classes = Test*
python_functions = test_*

跳过

  • pytest.mark.skip(reason) 无条件跳过,,reason是跳过的原因;
  • pytest.mark.skip(condition,reason) 有条件跳过,跳过的条件就是condition,如果满足才会做跳过操作,如果不满足就不会跳过;同样,reason仍旧是跳过的原因;

标记

如果一个用例我们认为它会执行失败,那就预期它失败,并希望对该用例进行标记;

  • 预期失败,执行失败,结果:XFAILED;
  • 预期失败,执行成功,结果:XPASS;
  • 预期失败,执行成功,这样是不符合逻辑的,要把这种牛永利判定为执行失败,需要在配置文件中添加: xfail_strict=true;

参数化

import pytest

l = [1, 2, 3, 4]
@pytest.mark.parametrize("name" , l)
def test_case(name):
	print(name)
	
l1 = [1, 2, 3, 4]
l2 = ["a", "b", "c", "d"]
@pytest.mark.parametrize("key, name" , list(l1, l2))
def test_case(key, name):
	print(key, name)

固件

测试夹具,在测试用例执行之前或之后执行的的一些方法;
功能类似于setup ,teardown ,相对更灵活;

import pytest

@pytest.fixture()
def login():
	print("login")

#调用方式1: 装饰器
@login
def test_1 ():
	print("test 1")


#调用方式2: 传参
def test_1 (login):
	print("test 1")

#调用方式3:
在@pytest.fixture()中设置属性@pytest.fixture(autouse = True)
在用例中就不需要使用上述两种方式引入fixture了,fixture属性也可以设置范围session:
["session","module","class","function",]

报告

allure

安装
  • 依赖java,需要先安装Java环境;
  • allure插件,并设置环境变量;
  • allure包 ,pip install allure-pytest;
工作原理
  • 配置生成结果数据存放路径:
    addopts = -v -s --html=report/report.html --aluredir ./report/result
  • 读取json文件生成allure报告
    allure generate json数据所在路径 -o 测试报告保存路径 --clean
  • 报告查看
  • 依赖http服务器,可以借助pycharm;
  • allure open
  • allure server
其他用法
  • title
  • description
  • severity
  • feature、story
  • dynamic

应用场景

接口自动化的框架开发

  • 涉及的知识点
  • pytest
  • allure
  • 参数化
  • 配置文件
  • Excel
  • Yaml
  • Conf
  • 日志操作
  • 文件操作
  • 邮件
  • 终端执行命令

实现的功能

  • 各功能拆分为多个目录
  • 使用参数化读取Excel文件
  • 发请求
  • 获取请求结果
  • 校验、断言
  • 生成测试报告并打包发送邮件

refer