01实战之分离测试固件

在UI 自动化测试中,不管编写哪个模块的测试用例,都需要首先在测试类中编写测试固件初始化WebDriver类及打开浏览器,执行登录,才能进行下一步业务逻辑的操作,测试用例执行完成后还需要关闭浏览器,这部分的代码如下:

import unittest
from selenium import webdriver
import time, osclass InitTest(unittest.TestCase):@classmethoddef setUpClass(cls):#print('start!进入初始化环境')cls.dr = webdriver.Chrome()cls.dr.maximize_window()#print('测试浏览器为:{0}'.format(cls.dr.name))time.sleep(1)ulr1 = 'http://*******.****.com.cn'@classmethoddef tearDownclass(cls):cls.dr.quit()```
在每一个测试类中都要编写以上代码,因此需要重复编写很多代码。是否可以把测试固件这部分代码分离出去,测试类直接继承分离出去的类呢?我们把测试固件分离到项目中,新建文件名称为 public_XF_login.py   类名为:InitTest

import unittest
from selenium import webdriver
import time, os

class InitTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
#print(‘start!进入初始化环境’)
cls.dr = webdriver.Chrome()
cls.dr.maximize_window()
#print(‘测试浏览器为:{0}’.format(cls.dr.name))
time.sleep(1)
ulr1 = ‘http://.com.cn’
#(u’访问测试环境后台管理系统’)
cls.dr.get(ulr1)
#print(‘测试地址为:{0}’.format(cls.dr.current_url))
time.sleep(1)
xpath = cls.dr.find_element_by_xpath
#点击账号登录,输入用户名+密码
xpath(’//[@id=“app”]/div/div[2]/div[2]/div/div[1]/div’).click()
time.sleep(1)
# 捕捉账号文本栏,进行输入账号
xpath(’//
[@id=“app”]/div/div[2]/div[2]/div/form/div[1]/input’).send_keys(u’
’)
time.sleep(1)
# 捕捉密码文本栏,进行输入密码
xpath(’//[@id=“app”]/div/div[2]/div[2]/div/form/div[2]/input’).send_keys(u’*****’)
time.sleep(1)
#点击登录
xpath(’//
[@id=“app”]/div/div[2]/div[2]/div/form/div[3]/input’).click()

@classmethod
def tearDownclass(cls):cls.dr.quit()```

from test_python.public_XF_login import InitTest 在需要引用该类的文件先进行引用该类,测试类进行继承InitTest,继承后,在测试类中直接编写要执行的测试用例,例如(该2条case是小编实际项目的自动化代码,各位可以也拿)case001_验证登录是否成功,代码如下:

# -*-coding=utf-*-
import time
import unittest
from test_python.public_XF_login import InitTestclass Admin(InitTest):def testCase_001(cls):'''验证用户是否登录成功'''cls.assertEqual('http://********.com.cn/#/', cls.dr.current_url)time.sleep(1)cls.dr.quit()if __name__ == '__main__':unittest.main(verbosity=2)

from test_python.public_XF_login import InitTest 在需要引用该类的文件先进行引用该类,测试类进行继承 InitTest,继承后,在测试类中直接编写要执行的测试用例,例如case002_验证登录是否成功,代码如下:

# coding=utf-8
import time
import unittest
from test_python.public_XF_login import InitTestclass Admin(InitTest):def testCase_002(cls):'''进入门店评分报表页面_验证门店查看明细功能'''xpath = cls.dr.find_element_by_xpathtime.sleep(2)#进入门店评分报表页面xpath('/html/body/section/section/aside/ul/li[3]/span').click()time.sleep(1)#刷新门店评分报表页cls.dr.refresh()time.sleep(5)#点击列表第一页,第五行门店的查看按钮,进入评分信息详情'xpath('/html/body/section/section/section/main/div[2]/div/div/div[2]/div[2]/div[1]/div[3]/table/tbody/tr[5]/td[10]/div/button/span').click()#断言门店详情页面制定元素是否展示的为神秘访客 判断页面是否成功跳转到详情页text = xpath('/html/body/section/section/section/main/div[2]/div/div/div[2]/div[2]/div/div[1]/div[1]/p[1]').textcls.assertEqual(u'神秘顾客', text)time.sleep(1)cls.dr.quit()#Case_002执行完毕关闭浏览器if __name__ == '__main__':unittest.main(verbosity=2)

注解:首先需要导入public_XF_login.py 模块中的InitTest类,测试类 Admin 继承InitTest类。这样执行测试类后,会先执行setUpClass方法,再执行具体的测试用例,最后执行 tearDownclass 方法。python 的类继承的方式解决了在每个测试类中都需要编写测试固件的问题。把测试固件分离出去后,即使后期测试地址发生变化,只需要修改public_XF_login.py 模块中InitTest类中的 url地址即可,而不需要在每个测试类修改测试地址,减少了编写重复性代码的开销。分离了测试固件,运行以上代码,对应的测试用例执行通过。

02实战之批量执行测试用例

在实际测试中,常常需要批量执行测试用例。例如,在testCase 包中有 case001_login.py 和 case002_Score_report.py 两个文件,下面批量执行这两个模块的测试用例。创建新文件 test_case_suite.py,在 test_case_suite.py文件中编写批量执行的代码,测试用例的代码跟上面文件中的一致,目录大概如下

接着我们在创建 AllTest.py 我们来看看如何进行调用全部的测试用例,如下代码就可以实现

#-*-coding=utf-8-*-
import unittest
import osdef AllTest():'''获取所有的测试模块'''suite=unittest.TestLoader().discover(start_dir=os.path.dirname('F:\\python3\\python_code\\test_case_suite'),pattern='case*.py',top_level_dir=None)return suiteif __name__ == '__main__':unittest.TextTestRunner(verbosity=2).run(AllTest())

注解:在以上代码中,批量获取测试模块用到的方法是 discover。discover方法有三个参数,第一个参数 start_dir是测试模块的路径,存放在testCase包中;第二个参数pattern用来获取testCase包中所有以test开头的模块文件,会获取到test_baidu.py和test_sina.py;第三个参数 top_level_dir 在调用的时候直接给默认值None。我们执行 AllTest.py 文件执行代码如下,这就是批量化执行case.


后面我会在基于这集中测试方法上,补充一些可优化的点,最近工作比较繁忙,会抽空给大家分享好文,持续分享持续输出,希望本文对你们会有所帮助。本文参考Python自动化测试实战(作者:无涯),感谢前人的教程学学他人的知识点,一步一步变为自己的知识点,也可以从中衍生新的测试思想与方法。

如果对python自动化测试、web自动化、接口自动化、移动端自动化、面试经验交流等等感兴趣的测试人,810119819可以关注我。加入我们免费获取更多软件测试进阶资料!

web自动化测试实战之批量执行测试用例相关推荐

  1. selenium之批量执行测试用例

    把写好的测试用例放在指定目录下,使用discover函数扫描该目录,并根据关键字自动筛选需要执行的用例.本例使用Python3.6版本. 1 # 遍历指定目录,批量执行测试用例 2 import un ...

  2. API接口测试-postman批量执行测试用例及参数化

    当面对多个用例集场景时,单独请求某一接口会影响效率,而当我们为每个接口请求设置好相关的自动化断言代码后,是可以使用"用例集"为单位进行批量执行测试用例的,且可以模拟一些小规模的并发 ...

  3. 电商网站Web自动化测试实战( 编写京东搜索脚本python+selenium框架)

    电商网站Web自动化测试实战( 编写京东搜索脚本) 1,打开京东页 京东首页地址:https://www.jd.com/,故进入京东首页如下: 2,打开浏览器开发者模式 定位元素前需先打开浏览器开发者 ...

  4. Appium+Python之批量执行测试用例

    思考:当存在多个脚本,每个脚本中有多条测试用例时,我们该如何批量执行呢?分析:首先创建2个测试用例脚本(.py文件),每个脚本有2条测试用例,然后批量执行全部测试用例 #Test_01.py # co ...

  5. 第六章 第二节 selenium+unittest测试框架之批量执行测试用例

    到目前为止,我们执行的用例都很少,将用例写在一个测试文件中就可以去运行.但对于有成百上千用例的实际项目,我们总不能把所有用例都写在一个文件中,那是不现实的,本节我们将进一步学习 TestSuite(测 ...

  6. Web自动化测试简介及web自动化测试实战交教程

    一.认识web自动化测试 1.什么是自动化测试? 自动化测试的概念: 软件自动化测试就是通过测试工具或者其他手段,按照测试人员的预定计划对软件产品进行自动化测试,他是软件测试的一个重要组成部分,能够完 ...

  7. Python WEB 自动化测试实战,项目场景(详细)

    目录:导读 前言 一.文件上传 二.弹窗处理 1.alter弹框 2.confirm弹框 3.prompt 弹框 三.总结 前言 手工测试的占重比例达到了70%,相对开发来说,测试的门槛低,薪资也相对 ...

  8. 干货-卷起来,企业级web自动化测试实战落地(二)

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  9. 干货-卷起来,企业级web自动化测试实战落地(一)

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

最新文章

  1. 一个发送短信验证码 然后倒计时实例
  2. 【DS】排序算法之归并排序(Merge Sort)
  3. Spring原理简述
  4. python设置label的位置_Python3 tkinter基础 Label pack 设置控件在窗体中的位置
  5. Java设计模式-装饰者模式
  6. C++实验课任务(多态--容器--算法)
  7. clickhouse 新增列_Clickhouse入门
  8. Ubuntu 18.04修改默认源为国内源
  9. 转Java 开发环境配置
  10. 基于RV1126平台imx291分析 --- open及media graph分析
  11. 谁是应用软件商店急需的外援
  12. 中西方对时间的差异_中西方文化交际中时间观的差异对比
  13. 三国志战略版360区S4服务器合并信息,三国志战略版赛季区别 三国志战略版S4赛季与各赛季之间的区别_游侠手游...
  14. 区块链技术--Ethereum(以太坊)
  15. Java堆外内存:堆外内存回收方法
  16. SwiftUI教程第1章第20:加载Web图片
  17. gitlab修改附件上传文件大小限制
  18. Java中有些好的特性(一):静态导入
  19. 东方财富网 python_Python 东方财富网-股市行情数据抓取
  20. bootsect.s 解读——Linux-0.11 剖析笔记(二)

热门文章

  1. Spark中内存模型管理
  2. 机器学习未来十年:你需要把握的趋势和热点
  3. Unity学习4——背包
  4. 十以内的加减乘除运算题
  5. 【All Right,你现在看到的是,来自于一名初中生的自学开发成长之路】
  6. 追星女孩彩虹屁情话合集100条 ✔︎ (二)
  7. 热点:企业滥用个人信息该到头了,GDPR最高罚单出炉
  8. 图文混排(TextKit详解)
  9. Unity3D游戏开发之“Android SDK升级后不能打包问题”解决办法
  10. Java项目:基于java+ssm社会保险养老系统——计算机毕业设计