1:pytest安装,识别,运行


1:pytest安装

  python3 -m pip install pytest

  验证:pytest --version

2:pytest测试用例的识别与运行

  识别:

  1:测试文件(模块)以test_*.py或*_test.py

  2:测试类以Test*命名,测试用例以test_*的方法,

  3:不在测试类的所有test_*的用例方法

  执行:

  1:pytest:执行该命令目录下的所有测试模块下的测试用例(默认是从上到下顺序执行)

  2:pytest -v:打印详细的执行结果(会展示错误信息)

  3:pytest -v -s:会打印详细执行结果和print函数的信息

   4:执行单独的一个py文件:pytest -v 文件名.py(注意要在当前目录下存在文件)

  5:运行某个模块里面的某个测试类:pytest -v 文件名.py::测试类名

    pytest -v test_01.py::TestDemo

  6:运行某个模块里面的某个测试类某个测试方法:pytest -v 文件名.py::测试类名::测试方法名

    pytest -v test_01.py::TestDemo::test_one

   7:跳过指定的测试用例:pytest -v -k "类名 and not 测试方法名"

    pytest -v -k "TestDemo01 and not test_three"

    8:运行带标记的测试方法@pytest.mark.标记名

    @pytest.mark.smoke

               pytest -v -m smoke

   9:运行报错就就停止运行:pytest -v -x 文件名.py

    pytest -v -x test_01.py

  10:当用例执行错误达到指定的数量时,停止运行:pytest -v --maxfail=数量

    pytest -v --maxfail=2

  11:失败重新运行:

    安装:python3 -m pip install pytest-rerunfailures

    pytest -v --reruns 重跑次数 --reruns-delay 每次重跑相隔时间

    pytest -v --reruns 重跑次数 --reruns-delay 每次重跑相隔时间  -s  文件名.py

    1:跑全部:pytest -v --reruns 3 --reruns-delay 1

     2:跑单个模块

    pytest -v --reruns 3 --reruns-delay 1 -s test_01.py

     

  12:多条断言有失败也都能运行(通常第一条过不去,下面的断言就不执行了),断言报错也向下执行

    安装:python3 -m pip install pytest-assume

  13:简单的显示运行结果: pytest -q

 3:pycharm设置pytest运行

   1:运行单个测试用例

   2:执行全部测试用例:pytest.main()

  3:执行特定的命令(和cmd下执行一样)

    if __name__ == '__main__':

       pytest.main('-v -x ')

 

4:断言---pytest 里面断言实际上就是 python 里面的 assert 断言方法,常用的有以下几种
  • assert xx :判断 xx 为真
  • assert not xx :判断 xx 不为真
  • assert a in b :判断 b 包含 a
  • assert a == b :判断 a 等于 b
  • assert a != b :判断 a 不等于 b

5:pytest框架结构 

  模块级:setup_module/teardown_module(优先级最高---全局前后)

  类级别:setup_class/teardown_class(类中---测试类之前运行)

  方法级别:setup_method/teardown_method(类中---在方法开始前(未调用方法)运行)

  方法级别:setup/teardown(类中---在方法调用之前运行)

  普通函数:setup_function/teardown_function(不在类中,在普通方法调用前运行)