首页 > 技术文章 > web自动化中的pytest框架

wsk1988 2020-04-24 15:38 原文

一、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'])

 

推荐阅读