1. pytest命名规则

模块的命名要以“test”开头或者“_test.py”结尾

类的命名要以“Test”开头

测试用例的命名要以“test”开头

 

2. 使用pytest执行测试用例

cmd命令行参数运行:

1)最多允许失败的用例

pytest -x  # 遇到第一个失败时,退出执行
pytest --maxfail=2  # 遇到第二个失败时,退出执行

 

2)运行指定的测试用例

指定模块

pytest test_mod.py # test_mod.py为模块名

指定文件

pytest test_01/ # test_01/ 为路径

3)使用自定义标签运行指定用例,如何自定义标签请看第1.3节

pytest -m demo

pytest -m demo # demo为标签名

4)输出一个简单的总结报告

pytest -rA

-r是输出总结报告,后面跟着的参数是筛选,可以叠加筛选条件

f:失败的

E:出错的

s:跳过执行的

x:跳过执行,并标记为xfailed的

X:跳过执行,并标记为xpassed的

p:测试通过的

P:测试通过,并且有输出信息的;即用例中有print等

a:除了测试通过的,其他所有的;即除了p和P的

A:所有的

 

5)在代码中调用pytest

使用pytest.main()函数,参数必须放在元组或列表中,参数使用和命令行一致

if __name__ == '__main__':
    pytest.main(["-k","make and not two"])

6)输出报告

纯文本格式报告

pytest --resultlog=path

junitxml格式报告

pytest --junitxml=path

html报告(需先安装插件pip install pytest-html)

pytest --html=path

 

 

3. 自定义标签

首先要在main函数(执行pytest命令的入口函数,和测试用例文件夹同级)的同级目录下新增一个叫pytest.ini的文件(文件名不能改),然后定义标签

[pytest] # 区域名,固定不能动
markers = # mark标记,固定不能动
    skome: describe must be English # 标签名,冒号后面为标签描述,必须为英文
    test1:describe must be English
    demo:a test for pytest

定义好后在测试类或测试用例前打上标记

@pytest.mark.demo # demo为标签名

可打多个标签

 

4. 断言

  1. 使用assert断言,后面可跟表达式,具有普适性,最常用

assert 200==100

  1. 使用pytest.raise()断言,针对某类具体异常进行断言

def test_match(self):
    with pytest.raises(ValueError):
        myfunc()

如果myfunc()这个函数体(被测试的内容)没有抛出ValueError异常,则断言失败