Pytest基本介绍
1.Pytest是功能强大且易于使用的Python测试框架用于编写单元测试、集成测试和功能测试2.Pytest提供丰富的功能和灵活的用法使得编写和运行测试变得简单而高效一.Pytest框架优点1.简单易用Pytest的语法非常简洁清晰对于编写测试用例来说非常友好几乎可以在几分钟内上手2.自动发现测试Pytest能够自动发现项目中的测试文件和测试函数无需手动编写繁琐的配置3.丰富的断言库Pytest内置了丰富的断言库可以轻松地进行测试结果的判断4.支持参数化测试Pytest支持参数化测试能够快速地对多组输入进行测试5.插件丰富Pytest有着丰富的插件生态系统可以通过插件扩展各种功能比如覆盖率测试、测试报告生成等二.Pytest的组成部分1.用例主体部分(通常单独放在一个py文件)主体部分写测试用例2.用例运行语句(通常放在一个main文件)执行测试用例1.1.用例主体文件test_lesson1.py 用例主体部分 定义1个用例的函数需要带上test关键字 与之前的函数不同的是在pytest框架下可以不写调用语句也可以执行函数的内容 #主体例子1deftest_case():print(用例被运行)#主体例子2烤鸭1.0deftest_duck():print(-----烤鸭店利润计算器开始⼯作------)price1int(input(请输⼊烤鸭的进货价))# input传递来的值都是strprice2int(input(请输⼊烤鸭的售卖价))numint(input(请输⼊今天卖出的烤鸭数量))result(price2-price1)*numprint(今天的烤鸭利润是{}元.format(result))2.1.用例执行文件main.py2.1.1.Pytest通过一个list接受参数所以调用main函数时()里加上[]#用例执行语句importpytest pytest.main([-s])2.2.运行main.py文件执行结果三.Pytest运⾏时携带的参数-s表示开启终端交互其作⽤是可以让打印的内容输出显示在终端中或者可以在终端中与⽤例中的输⼊操作进⾏交互1.例如上面的代码--用例2是通过输入输出完成代码运行的看看不加-s的效果-v表示详细输出更详细的输出包括每个测试⽤例的详细结果和其他相关信息例如测试⽤例所在的模块、⽂件路径等2.还是上面的代码加上-v后的终端显示效果四.Pytest的⽤例命名规则1.Pytest测试⽂件的命名1.1.测试⽂件应以test_开头或以_test结尾1.1.1.这样Pytest可以⾃动识别并执⾏这些⽂件中的测试⽤例1.1.2.例如test_login.py或user_test.py1.2.使⽤有意义的名称来描述被测试的功能或模块1.2.1.例如test_authentication.py或test_user_management.py2.Pytest测试⽤例的命名2.1.测试⽤例函数应以test开头这样Pytest可以⾃动识别并执⾏这些函数作为测试⽤例2.1.1.例如def test_login_success(): 或 def test_add_product_to_cart(): 2.2.建议使⽤下划线_ 分隔单词⽽不是使⽤空格或其他特殊字符2.2.1.例如def test_calculate_total_amount(): 或 def test_validate_user_permissions(): 2.3.使⽤有意义的名称来描述测试的⽬的和预期结果2.3.1.例如test_login_success()测试登录功能的成功场景 test_calculate_total_amount()测试计算总⾦额的功能3.Pytest测试类的命名(可选)3.1.如果使⽤类来组织测试⽤例可以使⽤驼峰命名法CamelCase为测试类命名且开头需为Test开头3.1.1.例如class TestLogin: 或 class TestUserManagement: 3.2.测试类中的测试⽤例函数仍然应遵循以test开头的命名规则五.Pytest运行代码运行规则1.第一步当运行这段指令后它就会在当前运行指令的文件相对同级目录中找符合test_开头或者test_结尾的py文件或者再往下层找2.第二步然后再找文件中test开头的函数或者先找Test开头的类再找类中test开头的函数3.然后将通过上述方案中找到的所有用例依次执行4.本地运行示例4.1.m2文件夹下有2个py文件、一个main执行文件4.2.与这两个py文件目录同级的还有一个testcase文件夹里面还有2个py文件4.3.相当于是通过一个main执行文件同时执行m2文件夹所有的py文件中的测试用例4.4.运行main.py文件终端显示的执行顺序