一、unittest框架 现在企业自动化测试单元测试框架
1、unittest:Python自带的单元测试框架,也是最基础的自动化测试框架,具备测试流程的各种操作
2、pytest:unittest单元测试框架的升级版,它是现在企业最主流的自动化测试框架,Python的第三方库
unittest框架包含四大组件:
1、testcase 测试用例:实现自动化测试用例的编辑与管理
2、testfixture 测试夹具:实现对测试环境准备及测试环境还原清除
3、testsuite 测试套件:把多个用例集合到一起
4、testrunner 测试运行器:通过testrunner对测试套件中的用例进行统一执行,输出测试结果
二、unittest框架的使用
unittest框架用例执行按照0-9 a-z的顺序进行执行的
三、unittest的常用断言方法
1、什么是断言
对测试结果进行验证
2、常见的断言方法有哪些
self.assertEqual(参数1, 参数2, msg):判断参数1是否等于参数2,否则显示msg信息
self.assertIn(参数1, 参数2, msg):参数1是否包含在参数2
self.assertTrue(参数1, msg):如果参数1为True则测试通过,否则显示msg信息
self.assertNotEqual(参数1, 参数2, msg):判断参数1是否不等于参数2,否则显示msg信息
self.assertNotIn(参数1, 参数2, msg):参数1是否不包含在参数2,否则显示msg信息
self.assertFalse(参数1, msg):参数1为False则测试通过,否则显示msg信息
案例一
import unittest
class Test(unittest.TestCase):
def setUp(self) -> None:
print("每一条用例执行前,执行一次")
def tearDown(self) -> None:
print("每条用例执行后,执行一次")
@classmethod
def setUpClass(cls) -> None:
print("所有用例执行前,只执行一次")
@classmethod
def tearDownClass(cls) -> None:
print("所有用例执行后,只执行一次")
def test_case1(self):
print("case1")
def test_case2(self):
print("case2")
def test_case3(self):
print("case3")
def test_case4(self):
print("case4")
案例二
def test_case1(self):
'''
正确用户名密码登录成功
执行成功,返回success
:return:
'''
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
print("case1")
# 打开浏览器
driver = webdriver.Chrome()
#获取地址
#最大化窗口
driver.maximize_window()
#强制等待
time.sleep(5)
#定位登录
logn = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, "//li[@id='ttbar-login']/a//span[text()='请登录']")))
#点击登录
logn.click()
#定位用户名
#清空输入栏
username.clear()
#输入用户名
username.send_keys("17344707726")
#定位密码
password = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH,"//div[@id='entry']/input")))
#清空输入栏
password.clear()
#输入密码
password.send_keys("E415861502.")
print("case1")
#定位登录
login = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, "//a[text()='登录']")))
login.click()
time.sleep(5)
#关闭浏览器
driver.close()
def test_case2(self):
'''
反例1
用户名错误,登陆失败
执行失败,返回fail
:return:
'''
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
print("case2")
# 打开浏览器
driver = webdriver.Chrome()
# 获取地址
# 最大化窗口
driver.maximize_window()
# 强制等待
time.sleep(5)
# 定位登录
logn = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "//li[@id='ttbar-login']/a//span[text()='请登录']")))
# 点击登录
logn.click()
# 定位用户名
username = WebDriverWait(driver, 10).until(
# 清空输入栏
username.clear()
# 输入用户名
username.send_keys("17344707720")
# 定位密码
password = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div[@id='entry']/input")))
# 清空输入栏
password.clear()
# 输入密码
password.send_keys("E415861502.")
# 定位登录
login = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[text()='登录']")))
login.click()
time.sleep(5)
# 关闭浏览器
driver.close()
# self.assertEqual(1,2)
# assertEqual(a, b) - 断言
# a == b
# assertNotEqual(a, b) - 断言
# a != b
def test_case3(self):
'''
反例2
密码错误,登陆失败
执行失败,返回fail
:return:
'''
print("case3")
# self.assertEqual(1,2)
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
print("case3")
# 打开浏览器
driver = webdriver.Chrome()
# 获取地址
# 最大化窗口
driver.maximize_window()
# 强制等待
time.sleep(5)
# 定位登录
logn = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "//li[@id='ttbar-login']/a//span[text()='请登录']")))
# 点击登录
logn.click()
# 定位用户名
username = WebDriverWait(driver, 10).until(
# 清空输入栏
username.clear()
# 输入用户名
username.send_keys("17344707726")
# 定位密码
password = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div[@id='entry']/input")))
# 清空输入栏
password.clear()
# 输入密码
password.send_keys("E415861502")
# 定位登录
login = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[text()='登录']")))
login.click()
time.sleep(5)
# 关闭浏览器
driver.close()