1.console参数介绍
不同的参数代表不同的意思,在使用的时候严格按照参数进行套规则就可以了。
- -v :用于显示每个测试函数的执行结果
- -s :用于显示测试函数中print()函数输出
- -x,--exitfirst:在第一个错误或测试失败时立即退出
- -h :帮助
- -q: 只显示整体测试结果
2.pytest执行测试
实例
import pytest
class TestLogin(object):
def test_01(self):
print('test_01')
assert 1==1
def test_02(self):
print('test_01')
assert 1==1
if __name__ == '__main__':
pytest.main(['-v','-s','test01.py'])
执行测试
1、main()方法:pytest.main(['-v','-s','test01.py'])
2、命令行:pytest -s -v test.py
3、调整pycharm中的值:Tools->Python Integrated tools -> Default test runner
3.pytest标记
Pytest标记
1、pytest 查找测试策略
默认情况下,pytest会递归查找当前目录下所有以test开始或结尾的python脚本,并执行文件内所有以test开始或者结束的函数和方法。
2、标记测试函数
第一种,显示指定函数名,通过::标记 :test_no_mark.py::test_func1
第二种,使用模糊匹配,使用-k选项标识: pytest -k func1 test_no_mark.py
第三种,使用pytest.mark在函数上进行标记: 使用pytest.mark在函数上进行标记
4.pytest参数化处理
在pytest中,也可以使用参数化测试,即每组参数都独立执行一次测试。
使用的工具就是:pytest.mark.parametrize(argnames,argvalues)
5.数据格式
列表
字典
元组
6.增加可读性
参数化装饰器有一个额外的参数ids,可以标识每一个测试用例,自定义测试数据结果的显示,为了增加可读性
我们可以标记每一个测试用例使用的测试数据是什么,适当的增加一些说明
7.自定义id做标识
除了使用ids参数增加输出可读性外,还可以在参数列表的参数旁边定义一个id值来做标识
8.pytest fixture
定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture()
fixture命名与用例区分开,不要以test开头。fixture是有返回值的,没有返回值默认为None。
用例调用fixture的返回值,直接就是把fixture的函数名称当做变量名称。
9.unittest setup和unittest teardown简介
前置:setup,后置:teardown,在每次用例开始前和结束后都去执行一次。
前置类:setupClass,后置类:teardonwClass,需要配合@classmethod装饰器一起使用。
在做selenium自动化的时候,效率尤其突出,可以只启动一次浏览器执行多个用例。
10.pytest setup和pytest teardown简介
模块级:setup_module和teardown_module(开始于模块始末,全局的)
函数级:setup_function和teardown_function(只对函数用例生效(不在类中))、
类级:setup_class和teardown_class(只在类中前后运行一次(在类中))
方法级:setup_method和teardown_method(开始于方法始末(在类中))
类里面的(setup/teardown)运行在调用方法的前后