简单用法
运行规则
-
运行同目录下test_开头的文件
- Test开头的类
- test_*开头方法
- *_test结尾方法
- 注意:Test开头的类不能有__init__方法
-
执行参数
-
-q 显示简单运行结果
- pytest -q test.py
-
-s 详情打印运行日志
- pytest -s test.py
-
-v 显示详情运行信息
- pytest -v test.py
-
:: 运行模块下的类或方法
- pytest -v test.py::TestClass::test_method
-
-m 标记装饰器
- @pytest -m login
-
-k 匹配测试用例关键词
- pytest -k test test.py
-
assert断言
常用断言
- assert xx:判断xx是为真
- assert not xx:判断xx不为真
- assert a in b:判断b包含a
- assert a == b:判断a等于b
- assert a != b:判断a不等于b
异常断言
- pytest.raise(typeError):判断是否异常,保证用例可以继续执行
setup和teardown
类级别:setup_class与teardown_class
方法级别:setup_method与teardown_method
模块级别:setup_module与teardown_module
fixture
fixture的作用
- conftest.py配置里实现数据共享,不需要import就能自动找到fixture
fixture参数
-
scope范围默认:function
- @pytest.mark.userfixtures(fixture_name)
- 还有class、module、package、session常用
-
autouse默认:False
-
name装饰器名称
fixture参数request使用
- 作用:登录场景需要登录不同测试账号
- @pytest.fixture() 传参使用@pytest.mark.parametrize(“装饰函数名”,参数,indrect=True),直接会运行装饰函数
conftest
conftest的作用
-
fixture的配置文件
- 使用场景:所有用例都需要登录作为前置条件
- pytest会默认读取conftest的所有fixture
- conftest只对当前package生效,一个项目可有多个conftest
- 不需要导包,pytest会自动寻找conftest配置文件
conftest类型
- def func(scope=session)适用driver初始化
- def func(sscope=module) 使用单独某个模块
- def func(sscope=module) 适用类
调用方式:@pytest.mark.fixture(scope="session") def fun() print("这是初始化driver") def login(fun)
skip
skip的作用
- 标题无法在某些平台运行的测试功能,或者满足某些条件才会执行
skip的运行方式
- 针对整个测试用例或类@pytest.mark.skip(reason="不执行的原因")
- 测试方法中跳过,pytest.skip("不执行的原因")
- 跳过整个模块级别,pytest.skip=(msg="跳过原因"),all_module_level=True
- 满足某些条件跳过@pytest.mark.skipif(条件表达式,reason=“”)
count
count的作用
- 重复执行某个测试用例
count的运行方式
- count=2 或者 count 2
- 运行到第一次失败停止,-x与pytest -repeat结合使用,命令行运行:pytest --count=10 -x test_file.pyt
- 装饰器@pytest.mark.repeat(10)该用例重复执行10次
- --repeat-scope设置覆盖的测试用例执行顺序,例如pytest -s --count=2 --repeat-scope=class test.py 作用:test.py文件中的类重复执行5次