使用UnitTest框架对项目进行测试

使⽤UnitTest框架对项⽬进⾏测试
血浆分离器使⽤UnitTest框架对iweb_shop项⽬进⾏测试
UnitTest中⼀些重要的概念:
TestCase(测试⽤例): 所有测试⽤例的基类,它是软件测试中最基本的组成单元。⼀个testcase就是⼀个测试⽤例,是⼀个完整的测试流程,包括测试前环境的搭建(setUp),执⾏测试代码(run),以及测试后环境的还原(tearDown)。测试⽤例是⼀个完整的测试单元,可以对某⼀问题进⾏验证。
TestSuite(测试套件):,多个测试⽤例TestCase集合就是TestSuite,TestSuite可以嵌套TestSuite
TestLoder:是⽤来加载 TestCase到TestSuite中,其中有⼏个loadTestsFrom_()⽅法,就是从各个地⽅寻TestCase,创建他们的实例,然后add到TestSuite中,再返回⼀个TestSuite实例TextTestRunner:是来执⾏测试⽤例的,其中的run(test)会执⾏
TestSuite/TestCase中的run(result)⽅法。
TextTestResult:测试结果会保存到TextTestResult实例中,包括运⾏了多少⽤例,成功与失败多少等信息
TestFixture:⼜叫测试脚⼿,测试代码的运⾏环境,指测试准备前和执⾏后要做的⼯作,包括setUp和tearDown⽅法。总结就是:对⼀个测试⽤例环境的搭建和销毁。如何销毁呢?就是通过覆盖TestCase的setUp()和tearDown()⽅法来实现,tearDown()的过程很重要,为后⾯的case保证了⼀个⼲净的测试环境。
先写好TestCase然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运⾏TestSuite,运⾏的结果保存在TextTestResult中,整个过程集成在unittest.main模块中,main会调⽤TextTestRunner中的run来执⾏,或者我们可以直接通过TextTestRunner来执⾏⽤例。在Runner运⾏的时候,我们的测试结果会被输出到控制台,可以清晰的看到,还可以输出到⽂件,运⽤HTMLTestRunner⽣成⼀个报告。
正向登录测试
导包import unittest
新建测试类并继承unittest.TestCase
新建⼀个Fixture(setup,tearDown)
新建登录⽅法
if_name_==’_main_’:
Unittest.main()执⾏
程序思路
1、(setUp)
实例化浏览器
要实例化浏览器,必须要导包
打开项⽬⽹站
⽤driver接收
浏览器最⼤化
maximize_window
在实际使⽤selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要⽤到等待,⽽等待⽅式的设置是保证脚本稳定有效运⾏的⼀个⾮常重要的⼿段,在selenium中(appium通⽤)常⽤的等待分为显⽰等待WebDriverWait()、隐式等待implicitly_wait()、强制等待sleep()三种,
sleep(): 强制等待,设置固定休眠时间。后脚本的执⾏过程中执⾏ sleep()后线程休眠,⽽另外两种线程不休眠。
implicitly_wait():隐式等待,是设置的全局等待。设置等待时间,是对页⾯中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页⾯,直到到相关元素或者时间结束。
WebDriverWait():显⽰等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔⼀段时间检测⼀次当前页⾯某个元素是否存在,如果在规定的时间内到了元素,则直接执⾏,即到元素就执⾏相关操作,如果超过设置时间检测不到则抛出异常。
为什么要设置元素等待,由于⽹络速度原因,客户端向服务器发送请求,服务器接收到请求响应给我们,浏览器接收到响应的数据后会⾃动给我们解析这些数据代码来展现给我们,有可能在接收到数据的同时,浏览器还没有加载完成,元素定位已经开始他了,最后没有到直接抛出异常。但是代码
没有任何问题。
2、执⾏测试代码(run)
点击登录按钮跳转到登录界⾯
driver.find_element_by_link_text("登录").click()
定位⽤户名及操作
刮棒driver.find_element_by_css_selector("[alt*='邮箱']").send_keys("chenglin")
定位密码及操作
driver.find_element_by_css_selector('[name="password"]').send_keys("123456")
点击登录按钮
driver.find_element_by_css_selector(".submit_login").click()
等待后退出
活肽粉
time.sleep(3)
driver.find_element_by_link_text("安全退出").click()
3、(tearDown)
关闭浏览器
driver.quit()
有test01.py---test10.py
使⽤suite.addtest(unittest.makeSuite(className))导⼊10条测试例
.addtest()需要添加10次
defaultTestLoader
使⽤unittest.defaultTestLoader()类,通过该类下⾯的discover()⽅法⾃动搜索指定⽬录下指定开头的.py⽂件,并将查到的测试⽤例组装到测试套件;(查测试⽤例)(运⾏测试套件)
⽤法:
油烟机油杯test_dir=’./为当前⽬录’
disconver=unittest.defaultTestLoader.discover
(test_dir为要指定的⽬录,pattern为查的.py ⽂件的格式=’----*.py’)
运⾏:
runner= unittest.TextTestLoader()
runner.run(disconver)
defaultTestLoader属于TestSuite另⼀种实现⽅式
UnitTest断⾔
让程序代替⼈为判断测试程序执⾏结果是否符合预期结果的过程
怎样给图⽚加时间戳
图⽚名称添加错误信息
<_info()内容为: (<class 'AssertionError'>, AssertionError("'admin' not found in 'chenglin您好,欢迎您来到电⼦商务平台购物![安全退出]'"), <traceback object at 0x0000026C2A840248>)
只有捕获才会存储
断⾔:
如果⽤户名和密码不匹配,登陆失败,就捕获截图。
总结:
能组织⽤例和执⾏⽤例铝酸钙生产工艺
提供丰富的断⾔⽅法
提供丰富的⽇志与测试结果
测试结果——HTML测试报告(以⽹页形式)
HTML TestRunner(第三⽅模板)
#coding=utf-8
'''
Project:通过测试套件执⾏多个测试⽤例,并⽣成报告
'''
import unittest,time
from Common.HTMLTestRunner import HTMLTestRunner
#添加测试套件
discover=unittest.defaultTestLoader.discover("E:\\(AAA)Web⾃动化测试\\Daima", pattern="test*.py") if __name__ == '__main__':
#第⼀步定义报告的项⽬⽂件位置
dir_path="E:\\(AAA)Web⾃动化测试\\Report\\"
nowtime=time.strftime("%Y_%m_%d_%H_%M_%S")
file_name=dir_path+nowtime+"Report.html"
#给指定报告写⼊数据
with open(file_name, "wb") as f:
#实例化HTMLTestRunner
runner=HTMLTestRunner(stream=f,title="Web⾃动化测试",description="操作系统:win10")
runner.run(discover)
f.close()
HTMLTestRunner.py⽂件
"""
A TestRunner for use with the Python unit testing framework. It
generates a HTML report to show the result at a glance.
The simplest way to use this is to invoke its main method. E.g.
import unittest
import HTMLTestRunner
... define your tests ...
if __name__ == '__main__':
95202272HTMLTestRunner.main()
For more customization options, instantiates a HTMLTestRunner object.
HTMLTestRunner is a counterpart to unittest's TextTestRunner. E.g.
# output to a file
fp = file('my_report.html', 'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title='My unit test',

本文发布于:2024-09-22 03:57:19,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/104572.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   设置   等待   时间   元素   结果   浏览器   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议