1.unittest框架
单个脚本重复的操作:导包,获取浏览器的驱动,关闭浏览器,清除浏览器的操作。降低效率。 避免这些重复的操作? 用框架 unittest框架之setUp方法: 在执行测试用例脚本之前进行初始化环境的方法 方法参数中的self是干什么的 self代表类的实例/引用 定义全局变量,所有方法都可以使用 全局变量的定义:sel.变量名 tearDown() 去进行一些测试用例执行后清理环境的操作 setUp() tearDown() 测试固件 测试用例的方法是以:test_开头
from selenium import webdriver
import time
import unittest
class TestUnit1(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.maximize_window()
self.url = "https://www.baidu.com/"
self.driver.get(self.url)
time.sleep(3)
def test_search1(self):
self.driver.find_element_by_id("kw").send_keys("长津湖")
self.driver.find_element_by_id("su").click()
time.sleep(6)
def test_search2(self):
self.driver.find_element_by_id("kw").send_keys("Lisa")
self.driver.find_element_by_id("su").click()
time.sleep(6)
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
2.测试套件(suit)
把我们需要一次性执行的测试用例,放在一个套件里,一次性运行
addTest
把 一个测试脚本中某几个测试用例方法添加到测试套件 (脚本名称.类名称.方法名称)
makeSuite
把一个测试脚本中所有的测试用例方法添加到测试套件makeSuite addTest(unittest.makeSuite(脚本名称.类名称))
TestLoader
把一个文件中所有以某种形式命名的测试脚本中的所有测试用方法添加到测试套件 unittest.TestlLoader().LoadTestsFromTestCase(脚本名称.类名称)
discover
把一个文件夹中所有的测试脚本中的测试用例放入到测试套件 discover=unittest.defaultTestLoader.discover(具体文件夹,pattern=测试脚本名称通配符,top_level_dir=None)
import unittest
from src20211230 import testbaidu2
from src20211230 import testbaidu1
def creatSuit():
discover = unittest.defaultTestLoader.discover("../src20211230", pattern="testbaidu*.py", top_level_dir=None)
return discover
if __name__ == "__main__":
suit = creatSuit()
runner = unittest.TextTestRunner()
runner.run(suit)
3.测试用例执行顺序
test_ 0——9,A——Z,a——z
4.忽略测试用例的执行
@unittest.skip(“skipping”)
5.断言
自动化测试脚本中,如何判断实际结果和预期结果是否一致?
6.HTML报告的生成
测试用例比较多的时候,需要统计测试用例的执行结果,比如,执行了多少测试用例,执行成功的有多少,执行失败的有多少,执行失败的原因。
import HTMLTestRunner
import os
import sys
import time
import unittest
def createsuite():
discovers = unittest.defaultTestLoader.discover("../src20211230", pattern="testbaidu*.py", top_level_dir=None)
print(discovers)
return discovers
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)
|