单元测试
富文本编辑
富文本编辑可以用函数
def richText(driver, content):
'''
实现在富文本里面输入内容
:param driver: webdriver实例化后的对象信息
:param content: 富文本里面需要输入的文字内容
:return:
'''
js = "document.getElementById('ueditor_0').contentWindow.document.body.innerHTML='{0}'".format(content)
driver.execute_script(js)
#给富文本编辑器里面到写内容
driver=webdriver.Chrome()
driver.get('https://uutool.cn/ueditor/')
driver.implicitly_wait(30)
t.sleep(2)
进入富文本编辑器的框架
drvier.switch_to.frame('ueditor_0')
#给富文本编辑器里面到写内容
drvier.find_element_by_xpath('/html/body/p').send_keys('niubi')
t.sleep(2)
#函数方法
# richText(driver=driver,content='这一步是使用封装的函数来输入文本')
t.sleep(3)
时间控件
网页地址:file:///C:/Users/ADMINI~1/AppData/Local/Temp/Rar$EXa12876.2782/Time/index.html
时间控件的代码是
driver=webdriver.Chrome() #获取时间控件的地址,下载的解压 driver.get('file:///C:/Users/ADMINI~1/AppData/Local/Temp/Rar$EXa12876.2782/Time/index.html') driver.maximize_window() driver.implicitly_wait(10) #开始时间 startTime(driver=driver,content='2021-12-05 00:00:00') t.sleep(2) #结束时间 endTime(driver=driver,content='2021-12-05 10:00:00') t.sleep(5) driver.quit()
#给富文本编辑器里面到写内容
driver=webdriver.Chrome()
driver.get('https://uutool.cn/ueditor/')
driver.implicitly_wait(30)
t.sleep(2)
进入富文本编辑器的框架
drvier.switch_to.frame('ueditor_0')
#给富文本编辑器里面到写内容
drvier.find_element_by_xpath('/html/body/p').send_keys('niubi')
t.sleep(2)
#函数方法
# richText(driver=driver,content='这一步是使用封装的函数来输入文本')
t.sleep(3)
单元测试
#测试点,正常和异常
#两个相同类型,整型,不同类型写测试点
#要想单元自动化,就要单元测试框架来实现,导入unittest标准库
'''testCase:编写的每个具体的测试场景
测试固件(勾子方法):初始化和清理
testSuite:测试套件是testCase的集合
testRunner:具体执行被编写的测试套件或者是测试用例
testReport:测试报告反馈实际的测试结果'''
'''
一、自动化测试用例要素:
1,前提条件setUp() 开始
2,测试步骤, 测试用例
3,结果验证
4,清理 tearDown() 结束
编写测试用例注意事项
1、在一个测试类里面,每一个测试方法都是以test开头的,test不能是中间或者尾部,必须是开头,建议test_
2、每一个测试用例方法都应该有注释信息,这样在测试报告就会显示具体的测试点的检查点
3、在自动化测试中,每个测试用例都必须得有断言,无断言的自动化测试用例是无效的
4、最好一个测试用例方法对应一个业务测试点,不要多个业务检查点写一个测试用例
5、如果涉及到业务逻辑的处理,最好把业务逻辑的处理方法放在断言前面,这样做的目的是不要因为业务逻辑执 行错误导致断言也是失败
6、测试用例名称最好规范,有约束
7、是否先写自动化测试的测试代码,在使用自动化测试方式写,本人觉得没必要,毕竟能够做自动化测试的都具
备了功能测试的基本水平,所以没必要把一个业务的检查点写多次,浪费时间和人力成本。
测试固件每次均执行
断言
测试固件只执行一次
使用的是类方法@classmethon,这样测试固件只会执行一次的
测试用例执行顺序,数字与字母的顺序
为:0-9,A-Z,a-z,所以以A开头的测试用例方法会优先执行,以a开头会后执行。也就是根据数字、从小到 大执
行的,切记数字的大小值的是不包含test,值的是test后面的测试点的数字大小
测试用例执行3方法
1、直接执行
if __name__ == '__main__':
unittest.main()
2按照测试类执行,分类执行
调 用unittest 模块中的测试加载类 TestLoader() 里的 loadTestsFromTestCase(通过测试点加载)方法 (BaiduTest)
suite=unittest.TestLoader().loadTestsFromTestCase(BaiduTest) #调用测试点,也就是类名字来执行
unittest.TextTestRunner().run(suite)
# 按照模块执行
suite = unittest.TestLoader().loadTestsFromModule('test-baidu-class.py')
unittest.TextTestRunner().run(suite)
os
加载所有测试的模块'
方法关键字;discover里面有两个参数,一个是开始路径,一个是正则表达式
import unittest
import os
def getTests():
'''加载所有测试的模块'''
suite=unittest.TestLoader().discover(start_dir=os.path.dirname(__file__),pattern='test_*.py')
return suite
def runSuite():
unittest.TextTestRunner().run(getTests())
runSuite()