
一.Pytest开始用例设计1.用例设计目录2.test_bjhg_class.pyclassTestClass:deftest_one(self):xthisasserthinxdeftest_two(self):xhelloasserthasattr(x,check)deftest_three(self):ahellobhello worldassertainb3.test_bjhg_sample.pydeffunc(x):returnx1deftest_answer():assertfunc(3)5二.Pytest执行方式1.cmd执行pytest用例有三种方法一般推荐第一个(简单、好记、好写)1.1.如果不带参数在某个文件夹下执行时它会查找该文件夹下所有的符合条件的用例1.1.1.pytest1.1.2.py.test1.1.3.python-m pytesta.第一步当运行指令后它就会在当前运行指令的文件相对同级目录中找符合test_开头或者test_结尾的py文件或者再往下层找 b.第二步然后再找文件中test开头的函数或者先找Test开头的类再找类中test开头的函数c.然后将通过上述方案中找到的所有用例依次执行1.本地运行1.1.m2文件夹下有2个py文件、一个main执行文件1.2.与这两个py文件目录同级的还有一个testcase文件夹里面还有2个py文件1.3.相当于是通过一个main执行文件同时执行m2文件夹所有的py文件中的测试用例1.4.运行main.py文件终端显示的执行顺序2.在terminal终端运行2.1.某个目录下所有的用例pytest2.1.1.新建test_bjhg_sample文件(文件命名以test_*开头或者*_test结尾)deffunc(x):returnx1deftest_answer():assertfunc(3)52.1.2.查找当前目录及其子目录下以test_*.py或*_test.py文件找到文件后在文件中找到以test开头函数并执行2.1.3.上面写的是一个test开头的测试函数当用例用多个test开头的时候写函数就不太合适2.1.4.这时可以把多个测试用例写到一个测试类内classTestClass:deftest_one(self):xthisasserthinxdeftest_two(self):xhelloasserthasattr(x,check)2.2.执行某个目录下所有的用例pytest 文件名2.3.执行某一个py文件下用例pytest 脚本名称.py2.3.1.切换到脚本所在的目录下或者在执行的时候加上完整的路径2.4.运行start.py模块里面的某个函数或者某个类某个类里面的方法2.4.1.加v和不加-v都可以加-v的话打印的信息更详细pytest-v 08_mark.py::TestClass::test_method pytest 08_mark.py::TestClass::test_method pytest start.py::test_answer2.4.2.运行start.py模块里面测试类里面的某个方法pytest test_mod.py::TestClass::test_method2.4.2.1.如果是在类下面的函数必须要完整的路径包含类2.5.按节点运行2.5.1.每个收集的测试都分配了一个唯一的nodeid2.5.1.1.它由模块文件名和后跟说明符组成来自参数化的类名函数名和参数由::characters分隔2.6.运行.py模块里面的某个函数pytest test_mod.py::test_func2.7.-m 标记表达式运行pytest-m slow2.7.1.将运行用pytest.mark.login装饰器修饰的所有测试(后面再展开讲标记)2.8.从包里面运行pytest —pyargs pkg.testing2.8.1.这将导入pkg.testing并使用其文件系统位置来查找和运行测试2.9.pytest-x(遇到错误时停止测试)运行pytest-x test_class.py2.9.1.从运行结果可以看出本来有2个用例第一个用例失败后就没继续往下执行2.10.pytest--maxfailnum(当用例错误个数达到指定数量时停止测试)运行pytest--maxfail1start.py2.11.pytest-q(简单打印只打印测试用例的执行结果)运行pytest-q start.py2.11.1.如果只想运行这个文件加上-q参数-q参数用来指定执行的文件2.11.2.不指定就执行该文件夹下所有的用例2.11.3.pytest会找到符合规则(test_.py和_test.py)所有测试因此发现两个test_前缀功能2.11.4.如果只想运行其中一个可以指定传递文件名test_class.py来运行模块 py.test-q test_class.py2.11.5.第一次测试通过第二次测试失败。 可以在断言中轻松查看失败的原因2.12.pytest-s(详细打印)运行pytest-s start.py2.13.pytest-v(表示输出更详细的输出包括每个测试⽤例的详细结果和其他相关信息)运行pytest-v start.py2.14.pytest-sv(详细打印)运行pytest-sv start.py2.15.pytest-k(匹配用例名称)运行2.15.1.执行测试用例名称包含http的所有用例pytest-s-k http start.py2.15.2.根据用例名称排除某些用例pytest-s-knot httpstart.py2.15.3.同时匹配不同的用例名称pytest-s-kmethod or weibostart.py2.15.4.同时匹配相同的用例名称pytest-s-kmethod and weibostart.py2.15.5.-k按关键字匹配pytest-kMyClass and not method2.15.1.1.运行包含与给定字符串表达式匹配的名称的测试其中包括使用文件名类名和函数名作为变量的运算符12.15.1.2.上面的实例中运行TestMyClass.test_something但不运行TestMyClass.test_method_simple五.Pycharm运行三种方式a.上边已经介绍如何在cmd执行Pytest用例在Pycharm写完用例后需要调试看看是不是能正常运行 b.如果每次跑去cmd执行太麻烦所以很有必要在Pycharm里面运行pytest用例1.以xx.py脚本方式直接执行1.1.当写的代码里面没用到Unittest和Pytest框架时并且脚本名称不是以test_开头命名的此时Pycharm会以xx.py脚本方式运行defhello():print(hello world !)if__name____main__:hello()2.以Unittest方式运行2.1.当脚本命名为test_xx.py时用到Unittest框架Pycharm会自动识别到以Unittest方式运行3.以Pytest方式运行3.1.Pytest方式运行需要改该工程设置默认的运行器文件-设置-Python-工具-集成工具-默认测试运行程序-选择pytest3.2.备注Pytest是可以兼容Unittest框架代码六.Pycharm写Pytest代码1.在Pycharm里面写Pytest用例先导入pytest1.1.test_bjhg_class.pyimportpytestclassTestClass:deftest_one(self):xthisasserthinxdeftest_two(self):xhelloasserthasattr(x,check)deftest_three(self):ahellobhello worldassertainbif__name____main__:pytest.main(-q test_bjhg_class.py)2.1.运行结果“.F.” 点是代表测试通过F是Fail的意思2.2.warnings是用于pytest.main(-q test_bjhg_class.py)里面参数需要传list多个参数放list就不会有警告