Python测试框架——Pytest 封装使用
如:test_login()和test_add(),肯定会先运行test_add()。@pytest.mark.parametrize('参数名1,参数名2',([参数值1,参数值2],[参数值3,参数值4]))@pytest.mark.parametrize('参数名',(参数值1,参数值2,参数值3))光标定在类名,右键运行会运行整个py文件。输入pytest 文件名.py -v :指定运行某
1、命名规范
测试模块的命名应以test_开头,如:test_calculator.py。
测试类的命名应以Test开头,如:TestClassAddition。
测试函数应以test_开头,如:test_addition()。
注意:测试方法,是根据ASCII顺序执行,并非按照测试方法编写的顺序。如:test_login()和test_add(),肯定会先运行test_add()。
2、Pytest的运行模式
(1)Pycharm运行:
光标定在某个方法,右键运行只会运行此方法。光标定在类名,右键运行会运行整个py文件。
需要在Pycharm中设置test runner为pytest。
(2)终端cmd命令:
pytest:会运行所有py文件。
pytest 文件名.py:指定运行某个py文件。
pytest 文件名.py -v :指定运行某个py文件,且打印详细信息。
pytest 文件名.py -s :指定运行某个py文件,且输出打印信息。
pytest ./路径名称:运行指定目录的文件
pytest ./路径/文件名.py ::类名/函数名:运行指定类或方法
(3)main方法运行:
if __name__ == '__main__': pytest.main(["-s","test_login_para1.py"])
3、Pytest的运行顺序
(1)pytest默认执行顺序:根据ASCII排序
输出结果:
(2)指定顺序:order控制
添加装饰器@pytest.mark.run(order=2),用例执行顺序会以order值大小升序去调用执行
注意:需要先安装pytest的插件:
可以在Pycharm安装:Setting->Project Interpreter->+->安装pytest-ordering
可以命令行安装:pip install pytest-ordering
输出结果:
4、Pytest 标签模式
(1)不执行,直接跳过:
@pytest.mark.skip("不执行此方法")
输出结果:
(2)条件跳过:
@pytest.mark.skipif(condition=='XX', reason='XXXX')
输出结果:
5、Pytest的前置和后置方法
(1)初始化方法:setup_method()
即:每个测试方法开始前都需要进行的处理。
(2)回收方法:teardown_method()
即:每个测试方法执行后,要完成一些回收工作。
6、Pytest的前置和后置类函数
(1)前置类函数:setup_class()
(2)后置类函数:teardown_class()
注:在整个类分别只执行一次
7、Pytest参数化&数据驱动:@pytest.mark.parametrize()
(1)单个参数:
@pytest.mark.parametrize('参数名',(参数值1,参数值2,参数值3))
(2)多个参数:
@pytest.mark.parametrize('参数名1,参数名2',([参数值1,参数值2],[参数值3,参数值4]))
def test_方法名(self,参数名1,参数名2)
8、Pytest测试方法之间传参:
(1)单一参数传递:@pytest.fixture()
输出结果:
(2)多个参数传递:
A函数把多个参数传到列表里,然后返回此列表,B函数调用A函数。
9、异常处理
try:
(想捕捉的代码)
except Exception as e:
(抛出异常会执行的代码)
finally:
(无论是否有异常,都会执行的代码)
10、Pytest的断言
Pytest默认提供如下断言方法:
assert xx 判断xx为真
assert not xx 判断xx不为真
assert a in b 判断b包含a
assert a == b 判断a等于b
assert a != b 判断a不等于b
更多推荐
所有评论(0)