pytest 用例编写规则、命令行执行用例、用例执行的先后顺序

用例编写规则:(按以下规则编写,否则pytest不会正常执行到用例)

文件名以 test_*.py 开头和 *_test.py 结尾的文件
函数 以test_开头
类 以Test开头,且不能包含 __init__ 方法
类里面的方法 以test_开头
所有的包 pakege 必项要有__init__.py 文件
断言必须使用assert(py的原生断言方法)

执行用例:(命令行)
查看帮助(可用参数):                                    pytest -h (pytest --help)
执行某个目录下所有用例 :                          pytest      (一般情况下都默认这样运行,默认查找所有符合的用例运行)
执行某个.py文件内用例:                             pytest xx.py
执行指定的文件内某个函数、方法:  pytest test_demo.py::test_func  、pytest test_demo.py::TestClass::test_method    (::表示某节点,可用来分隔使用,这样可以指定运行)

运行某个mark标记的用例:                        pytest -m login (运行所有被装饰器@pytest.mark.login修饰的用例,即只要用例前有这个装饰器标记的,都会被运行 )
运行用例遇到错误时立即停止:                  pytest -x test_demo.py(想不停止的话,就普通的运行就行:pytest)
运行用例达到指定错误数量时停止:            pytest --maxfail=5(这表示用例运行达到5个错误时,会停止运行)
关闭信息:                                                    --tb=no
只输入assert的错误信息:                        --tb==short
用一行来展示错误信息:                          --tb=line (只显示错误的位置行数)
显示测试函数的执行速度:                       --duration=0

例:
新建test_demo.py

import pytest
class TestClass:
def test_one(self):
x = "helloworld"
assert ‘h‘ in x                   #断言h包含在x当中
if __name__ == "__main__":
pytest.main([‘-v‘,‘test_demo.py‘])                     # -v 打印详细信息 #pytest.main()括号里面要传入list类型参数,否则运行完成后会有warning提醒


那么在编辑器pycharm内鼠标右键进行执行:(三种方式来执行:直接run,unittest,pytest
随便写一个函数然后右键运行:                                  会出现:run 函数名
当脚本应用了unittest时,右键运行会出现:              run ‘Unittests in xxx‘
那么:当脚本应用了pytest时,就要先设置运行器了:Setting--Tools--Python Integrated Tools--项目名称--Default test runner--选择py.test
然后鼠标选中要运行行,右键可见:run ‘py.test in xxx‘


用例执行的先后顺序:

新建demo.py:
import pytest
class TestLogin():
def test_d():
pass
def test_b():
pass
def test_a():
pass
def test_02():
pass
def test_01():
pass


if __name__ == "__main__":
pytest.main(‘-v‘,‘demo.py‘)

如果脚本如上:

执行后会按照脚本用例顺序执行(从上至下);
而不同于unittest(‘unittest中执行脚本用例时,根据用例的字母ASCII码的排序来执行,数字也按照数字从小到大来执行’)

相关推荐