IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【自动化测试学习笔记 selenium 三 】 -> 正文阅读

[系统运维]【自动化测试学习笔记 selenium 三 】

目录

unittest框架解析

unittest各组件的关系 :

批量执行脚本

addTest() 的应用

makeSuite ()

TestLoader()

discover()的应用

用例执行顺序

忽略用例的执行

unittest断言

HTML报告生成


unittest框架解析

unittest是python的单元测试框架,直接提供了创建测试用例,测试套件以及批量执行的方案

直接进行 import unittest 就可以使用

作为单元测试的框架,unittest也是可以对程序最小模块的一种敏捷化测试。利用单元测试框架

创建一个类,该类继承unittest 的TestCase 这样可以把每个case看成是一个最小的单元,由测试容器

组织起来,到时候直接执行,同时引入测试报告。

unittest各组件的关系 :

?

test fixture : 
初始化和清理测试环境,比如创建临时的数据库,文件和目录
test case :
单元测试庸用例,TestCase 是编写单元测试用例最常用的类
test suite :
单元测试用例的集合,TestSuite 是最长用的类
test runner :
执行单元测试
test report :
生成测试报告
?
from selenium import webdriver
import unittest
import time
import os
from selenium.common.exceptions import NoAlertPresentException
from selenium.common.exceptions import NoSuchElementException
?
class testBaidu1(unittest.TestCase):
 ? ?def setUp(self):
 ? ? ? ?print("----setUp----")
 ? ? ? ?self.driver = webdriver.Chrome()
 ? ? ? ?self.url = "https://www.baidu.com/"
 ? ? ? ?self.driver.maximize_window()
 ? ? ? ?time.sleep(3)
 ? ? ? ?
 ? ? ? ?
 ? ? ? ?#测试用例
?
?
 ? ?def test_hao(self):
 ? ? ? ?driver = self.driver
 ? ? ? ?url = self.url
 ? ? ? ?driver.get(url)
 ? ? ? ?driver.find_element_by_link_text("hao123").click()
 ? ? ? ?time.sleep(4)
?
?
 ? ?def test_baidu(self):
 ? ? ? ?driver = self.driver
 ? ? ? ?url = self.url
 ? ? ? ?driver.get(url)
 ? ? ? ?#self.assertEqual("突如其来的假期_百度搜索")
?
 ? ? ? ?driver.find_element_by_id("kw").send_keys("突如其来的假期")
 ? ? ? ?driver.find_element_by_id("su").submit()
 ? ? ? ?time.sleep(4)
 ? ? ? ?print(driver.title)
 ? ? ? ?time.sleep(4)
 ? ? ? ?
 ? ? ? ?#test fixture  清除环境
 ? ? ? ?
 ? ?def tearDown(self):
 ? ? ? ?print("----tearDown----")
 ? ? ? ?self.driver.quit()
?
?
 ? ?if __name__ == "__main__" :
 ? ? ? ?unittest.main()
?

?if __name__ == "__main__" :
 ? ? ? ?unittest.main()
 ? ? ? ?#如果 name == main 则执行 main 方法
 ? ? ? ?#unittest是python自带的单元测试框架
 ? ? ? ?#unittest.main()运行开头为“test”的函数。
 ? 
 ? ? ?#可以增加verbosity参数,例如unittest.main(verbosity=2)
#在主函数中,直接调用main() ,在main中加入verbosity=2 ,这样测试的结果就会显示的更加详细。
#这里的verbosity 是一个选项, 表示测试结果的信息复杂度,有三个值:
#0 ( 静默模式): 你只能获得总的测试用例数和总的结果比如总共100个失败,20 成功80
#1 ( 默认模式): 非常类似静默模式只是在每个成功的用例前面有个“ . ” 每个失败的用例前面有个“F”
#2 ( 详细模式): 测试结果会显示每个测试用例的所有相关的信息
 ? ? ? 
 ? ? ? ?

 ? ? ? 
 ? ? ?
tips:在代码编写的过程中发现自己的 unittest.TestCase 方法没办法调用出来
?
原因:
?
包或者文件夹的命名问题,将自己的包命名为 unitest 因此 Python就会调用自己命名的unitest包下的类,而不是Python自带的unittest 包,因此将名称改为 其他的非unittest 即可。
?
?

批量执行脚本

addTest() 的应用

当有多个或者几百个测试用例的时候这样就需要一个测试套件,把测试用例放在该容器中进行执行

unittest 模块中提供了 TestSuite 类来生成测试套件,使用该类的构造函数可以生成一个测试套件的实例,该类提供了addTset 来把每个测试用例加入到测试套件中去。把一个测试赛脚本中的某几个测试用例方法添加到测试套件中.

#addTest(脚本名称.类方法.方法名称)
 #addTest
 ?  suite = unittest.TestSuite()
 ?  suite.addTest(testbaidu1.Baidu1("test_hao"))
 ?  suite.addTest(testbaidu1.Baidu1("test_hbaidu"))
 ?  suite.addTest(testbaidu2.Baidu2("test_hao"))
 ?  suite.addTest(testbaidu2.Baidu2("test_baidusearch"))
 ?  return suite
?
?
?

makeSuite ()

把一个测试脚本中的所有的测试用例方法添加到测试套件

#addTest(unittest.makeSuite(脚本名称.类名称))
 suite = unittest.TestSuite()
 ?  suite.addTest(unittest.makeSuite(testbaidu1.Baidu1))
 ?  suite.addTest(unittest.makeSuite(testbaidu2.Baidu2))
 ?  return suite

TestLoader()

#unittest.TestLoader().loadTestsFromTestCase(脚本名称.类名称)
#TestLoader
 ?  suite1 = unittest.TestLoader().loadTestsFromTestCase(testbaidu1.Baidu1)
 ?  suite2 = unittest.TestLoader().loadTestsFromTestCase(testbaidu2.Baidu2)
 ?  suite = unittest.TestSuite([suite1, suite2])
 ?  return suite

discover()的应用

#把一个文件中的所有以某种形式命名的测试脚本中的所有测试用方法添加到测试套件
#discover = unittest.defaultTestLoader.discover(具体文件夹(相对路径),pattern = 测#试脚本名称通配符,top_level_dir = None)
def createsuite() :
 ? ?discover = unittest.defaultTestLoader.discover("../test_unittest",pattern="testBaidu*.py",top_level_dir=None)
 ? ?print(discover)
 ? ?return discover

用例执行顺序

unittest 框架默认加载测试用例的顺序是根据 ASCII码表的顺序,数学与字母的顺序为:
0-9,A-Z,a-z。
所以, TestAdd 类会优先于TestBdd 类被发现, test_aaa() 方法会优先于test_ccc() 被执行。对于测试目录与测试文件来说, unittest 框架同样是按照这个规则来加载测试用例。

忽略用例的执行

@unittest.skip("skipping")
?

unittest断言

自动化测试脚本如何判断实际结果和预期结果是否一致
?
self.assertEqual(预期判断的结果,driver.title,msg="实际的结果与预期的结果不一致")
asserEqual(预期结果,实际结果,msg = "实际结果与预期的结果输入不一致的时候输出的信息")
?
?
?

HTML报告生成

import HTMLTestRunner
import os
import sys
import time
import unittest
?
def createsuite() :
 ? ?discover = unittest.defaultTestLoader.discover("../test_unittest",pattern="testBaidu*.py",top_level_dir=None)
 ? ?print(discover)
 ? ?return discover
?
if __name__ == "__main__" :
 ? ?curpath = sys.path[0]
 ? ?print(sys.path)
 ? ?print(sys.path[0])
 ? ?#创建文件夹,创建的这个文件夹可以干什么
 ? ?if not os.path.exists(curpath+'/resultreport') :
 ? ? ? ?os.makedirs(curpath+'/resultreport')
?
?
?
 ? ? ? ?#文件夹的命名不能让名称重复
 ? ?now = time.strftime("%Y-%m-%d-%H %M %S",time.localtime(time.time()))
 ? ?print(now)
 ? ?print(time.time())
 ? ?print(time.localtime(time.time()))
 ? ?#文件名
 ? ?filename = curpath + '/resultreport/' + now + 'resultreport.html'
?
 ? ?with open(filename , 'wb') as fp :
 ? ? ? ?runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"测试报告",
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? description=u"用例执行情况", verbosity=2)
 ? ? ? ?suite = createsuite()
 ? ? ? ?runner.run(suite)

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:49:25  更:2022-01-04 13:50:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:55:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码