【B站最通俗易懂】Python接口自动化测试从入门到精通,超详细的进阶教程,看完这套视频就够了
小编使用的是unittest的一个扩展HTMLTestRunner
使用之前,我们需要下载HTMLTestRunner.py文件
点击HTMLTestRunner后进入的是一个写满代码的网页,小编推荐操作:右键 --> 另存为,文件名称千万不要改
python3使用上述HTMLTestRunner可能会报错,可以替换如下文件
HTMLTestRunner
接下来,小编将以登录网易邮箱为例,生成一份最基础的测试报告。小伙伴们copy走代码验证时一定记得修改账号密码哦。
目录结构如下:
将HTMLTestRunner.py文件存放到package包下,将test_login.py存放到testcase目录下,用于编写测试用例,建立testreport包,用于存放测试报告,在email目录下建立run_test.py,用于执行测试
HTMLTestRunner的使用方法在代码注释中介绍和解释【test_login.py】
from selenium import webdriver
import unittest,time
class Login(unittest.TestCase):
def setUp(self):
#打开百度,搜索“163网易邮箱”,登录
driver=webdriver.Firefox()
driver.implicitly_wait(5)
self.driver=driver
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("163邮箱登录")
driver.find_element_by_id("su").click()
name = driver.find_element_by_id("op_email3_username")
password = driver.find_element_by_class_name("op_email3_password")
login = driver.find_element_by_css_selector(".c-btn")
#如下操作可以使setUp中的变量被其他模块调用
self.name=name
self.password=password
self.login=login
def tearDown(self):
self.driver.quit()
def switch_window(self):
#切换窗口
for handle in self.driver.window_handles:
self.driver.switch_to.window(handle)
#j增加等待时间,可以提高测试用例执行的健壮性
time.sleep(2)
time.sleep(3)
#成功登录
def test_right_login(self):
#账号密码自行填写
self.name.send_keys("xxx")
self.password.send_keys("xxx")
self.login.click()
self.switch_window()
#t通过新窗口的title验证用例是否通过
self.assertEqual(self.driver.title,"网易邮箱6.0版","登录失败")
#密码为空登录
def test_null_psw_login(self):
self.name.send_keys("xxx")
time.sleep(3)
self.login.click()
self.switch_window()
# t通过新窗口的title验证用例是否通过
self.assertEqual(self.driver.title,"网易帐号中心 > 用户验证","未跳转至用户验证界面")
【run_test.py】
#导入HTMLTestRunner的包
from package import HTMLTestRunner
#导入test_login的包,执行测试用例时需使用
from testcase.test_login import *
#定义要执行的测试用例的路径
test_dir = './testcase'
#定义要执行的测试用例的路径和名称格式
#test_*.py的意思是,./testcase路径下文件名称格式为test_*.py的文件,*为任意匹配,路径下有多少的test_*.py格式的文件,就依次执行几个
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
#定义测试报告的名称和存储位置
filename = './testreport/loginReport.html'
#开始执行
if __name__ == '__main__':
suit=unittest.TestSuite()
suit.addTest(Login("test_right_login"))
suit.addTest(Login("test_null_psw_login"))
#以wb(可写的二进制文件)形式,打开文件,若文件不存在,则先执行创建,再执行打开
fp = open(filename, 'wb')
#调用HTMLTestRunner生成报告
runner = HTMLTestRunner.HTMLTestRunner(
# 指定测试报告的文件
stream=fp,
# 测试报告的标题
title=u"登录网易邮箱测试报告",
# 测试报告的副标题
description=u'用例执行情况(win7 64位)'
)
#执行用例
runner.run(discover)