pytest学习笔记

pytest运行方式

命令行运行

运行某个模块
pytest xxx.py

运行某个文件夹下面的所有
pytest xxx/

指定用例失败个数
pytest -x                    # 第01次失败,就停止测试
pytest --maxfail=2     # 出现2个失败就终止测试

通过关键字表达式过滤执行
pytest -k "MyClass and not method"
这条命令会匹配文件名、类名、方法名匹配表达式的用例,这里这条命令会运行 TestMyClass.test_something, 不会执行 TestMyClass.test_method_simple

运行指定测试
pytest xxx.py::xxx类::xxx方法

通过标记表达式执行
pytest -m slow
这条命令会执行被装饰器 @pytest.mark.slow 装饰的所有测试用例

通过包执行测试
pytest --pyargs pkg.testing
这条命令会自动导入包 pkg.testing,并使用该包所在的目录,执行下面的用例。

多进程运行cases
当cases量很多时,运行时间也会变的很长,如果想缩短脚本运行的时长,就可以用多进程来运行。
安装pytest-xdist:
pip install -U pytest-xdist
运行模式:
pytest test_se.py -n NUM
其中NUM填写并发的进程数。

重试运行cases
在做接口测试时,有事会遇到503或短时的网络波动,导致case运行失败,而这并非是我们期望的结果,此时可以就可以通过重试运行cases的方式来解决。
安装pytest-rerunfailures:
pip install -U pytest-rerunfailures
运行模式:
pytest test_se.py --reruns NUM
NUM填写重试的次数。

显示print内容
在运行测试脚本时,为了调试或打印一些内容,我们会在代码中加一些print内容,但是在运行pytest时,这些内容不会显示出来。如果带上-s,就可以显示了。
运行模式:
pytest test_se.py -s


另外,pytest的多种运行模式是可以叠加执行的,比如说,你想同时运行4个进程,又想打印出print的内容。可以用:
pytest test_se.py -s -n 4

主文件运行

# file_name: test_abc.py
import pytest  # 引入pytest包


def test_a():  # test开头的测试函数
    print("------->test_a")
    assert 1  # 断言成功


def test_b():
    print("------->test_b")
    assert 0  # 断言失败


if __name__ == '__main__':
    pytest.main("-s  test_abc.py")  # 调用pytest的main函数执行测试
        

运行返回码

pytest有以下6种退出码:
Exit code 0: 找到所有测试用例并测试通过
Exit code 1: 找到测试用例并运行但是部分测试用例运行失败
Exit code 2: 用户中断了测试
Exit code 3: 执行过程中发生了内部错误
Exit code 4: pytest命令行使用错误
Exit code 5: 没有找到任何测试用例

未完待续。。。

 

posted @ 2020-05-31 19:43  鱼虫光  阅读(98)  评论(0编辑  收藏  举报