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:打印详细的执行结果(会展示错误信息)

    

pytest 移动测试 pytest -v -s_测试用例

 

 

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

    

pytest 移动测试 pytest -v -s_测试用例_02

 

注意要在当前目录下存在文件)

    

pytest 移动测试 pytest -v -s_测试用例_03

 

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

    pytest -v test_01.py::TestDemo

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

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

   7:-k

      运行匹配包含02的测试用例

    pytest -v -k '02'

    运行包含02和03的用例--or

    pytest -v -k '02 or 03'

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

    pytest -v -k "TestDemo01 and not test_three"

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

    @pytest.mark.smoke

    

pytest 移动测试 pytest -v -s_pytest 移动测试_04

               pytest -v -m smoke

    

pytest 移动测试 pytest -v -s_python_05

 

 

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

    pytest -v -x test_01.py

    

pytest 移动测试 pytest -v -s_测试类_06

 

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

    pytest -v --maxfail=2

    

pytest 移动测试 pytest -v -s_python_07

 

  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

    

pytest 移动测试 pytest -v -s_测试类_08

 

     2:跑单个模块

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

     

pytest 移动测试 pytest -v -s_python_09

 

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

    安装:python3 -m pip install pytest-assume

      

pytest 移动测试 pytest -v -s_测试用例_10

      

pytest 移动测试 pytest -v -s_python_11

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

    

pytest 移动测试 pytest -v -s_测试用例_12

  14:收集用例不运行统计用例总数pytest --collect-only

  15:按指定顺序执行

    python3 -p pip install pytest-ordering    run标签

     @pytest.mark.run(order=1)           @pytest.mark.run(order=2)

order=1>order=2先执行,然后顺序执行

  16:pytest.ini配置文件改变执行规则--先下载ini插件

    

pytest 移动测试 pytest -v -s_测试类_13

 

 

    配置ini规则---生成报告和修改默认的识别规则

      识别以adb开头的py文件,类以Login开头,测试用例以case打头

    [pytest]

    addopts=-vs --alluredir ./report

    python_files='abc_*.py'

python_classes='Login*'

    python_functions='case*'

 

 

 

    

pytest 移动测试 pytest -v -s_测试用例_14

 

      

pytest 移动测试 pytest -v -s_测试用例_15

      

      17,python导入依赖包

        1:生成 requirements.txt 文件,用于记录所有依赖包及其精确的版本号

           python3 -m pip freeze >requirements.txt

        2:下载依赖包

          python3 -m pip install -r requirements.txt

   

 3:pycharm设置pytest运行

    

pytest 移动测试 pytest -v -s_pytest 移动测试_16

 

   1:运行单个测试用例

    

pytest 移动测试 pytest -v -s_python_17

 

同一包下所有测试模块的测试用例

    

pytest 移动测试 pytest -v -s_测试用例_18

 

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

    if __name__ == '__main__':

       pytest.main(['-v'])

       pytest.main(['-vxs','test_02.py::TestDemo02::test_one'])

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(不在类中,在普通方法调用前运行)

  

pytest 移动测试 pytest -v -s_测试类_19