python3.5+selenium3.4自动化测试10_selenium框架2.0-unittest(下)
来源:互联网 发布:weibull 7软件下载 编辑:程序博客网 时间:2024/06/05 02:37
框架2.0(下)
停了好长一段时间没有更新,最近比较忙,以后坚持至少一个月内输出1篇,继续上次需要掌握的技能,这次主要的函数调用和测试用例集的批量执行.
8.函数调用其实在前面几篇也有讲到,主要用于登陆的用户名和密码组合测试,可以参考
python3.5+selenium3.4自动化测试2_参数化
python3.5+selenium3.4自动化测试4_随机组合的用户名和密码登陆
下面在讲一个登陆和退出模块化,一般的系统都会有涉及到登陆和退出,当验证完登陆和退出的用例后,一般我们会有一组正常的用户名和密码进行登陆然后测试其他内容,这个时候登陆就可以独立到一个文件进行调用即可这边上一下登陆的代码和调用
创建一个mod_login_on.py
# _*_ coding: utf-8 _*_from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchAttributeExceptionimport unittest,time,refrom time import strftime, localtimefrom datetime import datetime#登陆函数def login(self): driver=self.driver try: driver.find_element_by_id("username").send_keys("admin") driver.find_element_by_id("secret").send_keys("password1") Select(driver.find_element_by_id('language')).select_by_value("en") driver.find_element_by_id("login_button").click() except: driver.get_screenshot_as_file(u"D:/python/selenium_use_case/error_png/2.ext/2.1_%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3])
调用登陆模块
# _*_ coding: utf-8 _*___author__ = 'leo'__date__ = '2017/7/6 10:29'from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support.ui import Selectfrom selenium.common.exceptions import NoSuchAttributeExceptionimport unittest,time,refrom time import strftime, localtimefrom datetime import datetimeimport HTMLTestRunner#import mod_login_on函数from Pubilic_mod import mod_login_onclass Delext(unittest.TestCase): def setUp(self): self.driver=webdriver.Chrome() self.driver.implicitly_wait(30) self.base_url="http://192.168.1.131" self.verificationErrors=[] self.accept_next_alert=True def test_Delext(self): u"""2.2.1 删除所有""" driver=self.driver driver.get(self.base_url+"/") #调用login模块 mod_login_on.login(self) try: time.sleep(3) # driver.switch_to_alert().accept() driver.implicitly_wait(3) #智能等待30 # driver.find_element_by_id("current").click() driver.find_element_by_xpath(".//*[@id='nav']/ul/li[4]/a").click() #切换到frame中再找到对应的元素 driver.switch_to.frame("mainscreen") driver.find_element_by_xpath(".//*[@id='btn_new_bulkexten']/span/span").click() driver.find_element_by_xpath(".//*[@id='btn_save_bulk']/span/span").click() driver.find_element_by_id("CHECKALL").click() driver.find_element_by_xpath(".//*[@id='btn_delete_selected']/span/span").click() driver.switch_to_alert().accept() #从frame中切回主文档 driver.switch_to.default_content() driver.find_element_by_xpath(".//*[@id='applyChanges_Button']/font").click() time.sleep(10)#等待10 except: driver.get_screenshot_as_file(u"D:/python/selenium/error_png/2.ext/2.2/%s.png" % datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3]) def tearDown(self): time.sleep(3) self.driver.quit() self.assertEqual([],self.verificationErrors)if __name__=="__main__": suite=unittest.TestSuite() suite.addTest(Delext("test_Delext")) unittest.TextTestRunner().run(suite)
9.测试用例集批量执行,先讲一下框架,这边先主要讲分为三个大模块error_png,report,test_case三个一级目录,主要存放错误图片,测试报告,测试用例集
├─error_png│ ├─1.login│ ├─2.ext├─report└─test_case └─case ├─A_login │ └─case_a_logininterface.py │ └─case_b_reset.py ├─B_ext │ └─case_a_creat.py │ └─case_b_reset.py ├─Pubilic_mod │ └─mod_login_on.py ├─all_test.py
通过上面的图片可以看出主要的用例集合放在case文件夹下,按大用例集分不同的文件夹,下面包含对应的.py测试用例,和批量执行文件all_test.py
#coding=utf-8import sysfrom time import strftime, localtimefrom datetime import datetimefrom case.A_login import *from case.B_ext import *import unittest,doctestimport HTMLTestRunnersuite=unittest.TestSuite()#loginsuite.addTest(unittest.makeSuite(case_a_logininterface.LoginInterface))suite.addTest(unittest.makeSuite(case_b_reset.LoginReset))#extsuite.addTest(unittest.makeSuite(case_a_creatext.Createext))suite.addTest(unittest.makeSuite(case_b_delext.Delext))filename='D:\\python\\selenium\\report\\result20_%s.html'% datetime.now().strftime("%Y%m%d.%H%M%S.%f")[:-3]fp=open(filename,'wb')runner=HTMLTestRunner.HTMLTestRunner( stream=fp, title='Report_title', description='Report_descrition')runner.run(suite)
a.需要说明下,这个在创建A_login的时候需要选择新建python package,会自动带一个init.py文件,有什么作用可以自行百度下,这边主要添加对应的py文件,如下图:
在批量运行的文件中要import这些内容
from case.A_login import *from case.B_ext import *
b.这边批量运行集合,主要跟单个运行添加测试到suite容器一样
if __name__=="__main__": suite=unittest.TestSuite() suite.addTest(Delext("test_Delext")) unittest.TextTestRunner().run(suite)
在每个用例末尾使用unitest.TextTestRunner()来运行单个脚本中的多个case,这边的TextTestRunner在上篇文章讲过和HTMLTestRunner一样是继承了TestResult类,TextTestRunner这个主要以文本形式展示,HTMLTestRunner这个将统一展现在html上,这边通过统一的脚本添加所有的用例到suite容器中,run这些用例
suite=unittest.TestSuite()#loginsuite.addTest(unittest.makeSuite(case_a_logininterface.LoginInterface))suite.addTest(unittest.makeSuite(case_b_reset.LoginReset))
最后运行输出的报告
通过这样的框架和需要理解的技巧,通过不断练习就会在2.0的的基础上不断巩固和对Python的深入了解,也基本上满足了一般公司的测试要求
—————————————————–分割线—————————————————–
用实际用例代码长期更新,介绍selenium使用中的知识小点,希望大家关注
关注微信公众号:无敌轻车
阅读全文
1 0
- python3.5+selenium3.4自动化测试10_selenium框架2.0-unittest(下)
- python3.5+selenium3.4自动化测试9_selenium框架2.0-unittest(上)
- python3.5+selenium3.4自动化测试8_selenium框架1.0
- python3.5+selenium3.4自动化测试7_selenium的Webdriver_API整理(下)
- python3.5+selenium3.4自动化测试6_selenium的Webdriver-API整理(上)
- python3.5+selenium3.4自动化测试6_selenium的Webdriver-API整理(上)
- python3.5+selenium3.4自动化测试5_frame中的对象
- python3.5+selenium3.4自动化测试2_参数化
- python3.5+selenium3.4自动化测试4_随机组合的用户名和密码登陆
- python3.5+selenium3.4自动化测试1_错误图片用时间命名保存
- python3.5+selenium3.4自动化测试3_下拉框循环选择
- python3 + selenium3 web自动化测试环境搭建
- Python的unittest自动化测试框架
- Python UnitTest 框架执行功能自动化测试
- Selenium自动化测试-unittest单元测试框架使用
- Selenium3.0 自动化测试
- Selenium3.0 自动化测试
- 自动化测试之_selenium IDE介绍
- 请大神讲解
- 双链表的基本使用及其应用(实验2.2)
- 解决Pr, AE在渲染时输出出错的问题
- BZOJ 4562: [Haoi2016]食物链 拓扑排序+DP(其实是递推)
- C++中引用(&)的用法和应用实例
- python3.5+selenium3.4自动化测试10_selenium框架2.0-unittest(下)
- Codeforces Round #411 (Div. 2) E
- 聚沙成塔--爬虫系列(二)(python3基础语法)
- unity_NGUI系统学习(十三)_使用脚本监听控件的值修改,取得控件的值
- 欧拉函数--打表法与直接求值法
- 使用PCL配合cvFindExtrinsicCameraParams2实现棋盘格控制模型的三维运动
- Struts2框架之result返回结果
- Java 高阶 —— 相等性比较
- 六行代码搭建静态网站