一、pytest框架的特点,是基于unittest之上的单元测试框架
1、自动发现测试模块和测试方法
2、断言使用 assert+表达式即可
3、可以设置会话级、模块级、类级、函数级的fixtures 数据准备+清理工作
4、有丰富的插件库,目前在800个以上。==allure
安装命令:
pip install pytest
安装html报告的插件:
pip install pytest-html
二、pytest收集测试用例的规则
1、默认从当前目录中搜集测试用例,即在那个目录下运行pytest命令,则从那个目录当中搜索
2、搜索规则:
1)、符合命名规则test_*.py或者*_test.py的文件
2)、以test_开头的函数名;
3)、以Test开头的测试类(没有__init__函数)当中,以test_开头的函数
3、如以下代码,里面test开头的函数和Test类中的test开头的函数都是pytest可以识别的测试用例
1 import unittest 2 from selenium import webdriver 3 from PageObjects.login_page import LoginPage 4 from PageObjects.index_page import IndexPage 5 from TestDatas import Common_Datas as CD 6 from TestDatas import login_datas as LD 7 from ddt import ddt,data 8 9 10 def test_dome(): 11 pass 12 13 @ddt 14 class TestLogin(unittest.TestCase): 15 @classmethod 16 def setUpClass(cls): 17 # 1、前置条件 18 cls.driver=webdriver.Chrome() 19 cls.driver.maximize_window() 20 cls.driver.get(CD.web_login_url) 21 # 实例化LoginPage类 22 cls.lg=LoginPage(cls.driver) 23 @classmethod 24 def tearDownClass(cls): 25 cls.driver.quit() 26 27 def tearDown(self): 28 self.driver.refresh() 29 pass 30 # 正常用例--登录成功 31 def test_login_1_success(self): 32 # 2、步骤 33 # 调用login方法 34 self.lg.login(LD.success_data['user'],LD.success_data['pwd']) 35 # 3、断言 36 self.assertTrue(IndexPage(self.driver).isExist_logout_ele()) 37 # 异常用例--手机号码格式不正确(大于11位,小于11位,为空,不在号码段) ddt 38 @data(*LD.error_data) 39 def test_login_0_user_wrongFormat(self,item): 40 self.lg.login(item['user'],item['pwd']) 41 self.assertEqual(self.lg.get_errorMsg_form_loginArea(),item['check']) 42 # 异常用例--手机号未注册,密码错误 43 @data(*LD.noRegOrPwdError_data) 44 def test_login_0_noRegOrPwdError(self,item): 45 self.lg.login(item['user'],item['pwd']) 46 self.assertEqual(self.lg.get_errorMsg_form_centerArea(),item['check'])