一、pytest
unittest和pytest区别:
共同点:
-
测试框架 都是通过代码来构建测试用例、收集用例、运行用例、生成报告
unittest、pytest、nose 单元测试框架
behava 行为驱动框架
区别:
- pytest基于unittest,可以允许unittest的用例
- unittest 按模版套 写用例-->TestCase,pytest 灵活,写用例-->可以写成方法、可以写成类。
pytest插件库:
https://docs.pytest.org/en/latest/reference/plugin_list.html#plugin-list
fixture
tips:
session :收集所有的测试用例执行完成,一次session(会话)
前置得到的数据,怎么传递给测试用例:
yield True,100,数组
用例如何接收:fixture的函数名,就代表返回值
fixture autouse控制是否自动调用,默认是关闭的,开启所有函数都会调用。一般是在需要的地方主动调用。
调用fixture
-
单个方法中直接调用
image.png
单个方法调用:
image.png
-
使用fixture装饰器调用
类下每个用例都执行:
image.png

pytest传参
测试函数的传参两种方式:fixture、参数化(ddt)
一个参数a,代表元组(1,3,4),一个参数a,b,c分别代表1,3,4
笛卡尔积的方式,第一组,是x的0,和y的2,第二组是x的0和y的3,
mark打标记
可以选择全量用例运行,也可以选择打标记的用例运行。
@pytest.mark.smoke
def test_case1():
print("冒烟测试case1")
使用步骤:
-
先注册标记名
创建:
pytest.ini文件,一般放在根目录下,文件内容:[pytest] markers= markname1:(标记说明,可写,须为英文) markname2: markname3: -
给测试用例、测试类打标记
语法:
@pytest.mark.已注册的标记名 -
按标记运行用例
pytest命令行:
pytest "-m","标记名"在收集到的用例中,只运行标记名的用例。
多个mark装饰器运行规则:
@pytest.mark.demo
@pytest.mark.smoke
def test_case1():
print("冒烟测试case1")
命令行: pytest "-m","demo and smoke"
命令行: pytest "-m","demo or smoke"
重运行机制
失败用例重运行。一旦失败,马上重新运行。











网友评论