4.22 学习笔记

一、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.common.by import By

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

import time

print("case1")

# 打开浏览器

driver = webdriver.Chrome()

#获取地址

driver.get("https://re.m.jd.com/page/homelike")

#最大化窗口

driver.maximize_window()

#强制等待

time.sleep(5)

#定位登录

logn = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, "//li@id='ttbar-login'/a//spantext()='请登录'")))

#点击登录

logn.click()

#定位用户名

username = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH, "//div@class='item item-fore1'/input")))

#清空输入栏

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, "//atext()='登录'")))

login.click()

time.sleep(5)

#关闭浏览器

driver.close()

def test_case2(self):

'''

反例1

用户名错误,登陆失败

执行失败,返回fail

:return:

'''

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

import time

print("case2")

# 打开浏览器

driver = webdriver.Chrome()

# 获取地址

driver.get("https://re.m.jd.com/page/homelike")

# 最大化窗口

driver.maximize_window()

# 强制等待

time.sleep(5)

# 定位登录

logn = WebDriverWait(driver, 10).until(

EC.element_to_be_clickable((By.XPATH, "//li@id='ttbar-login'/a//spantext()='请登录'")))

# 点击登录

logn.click()

# 定位用户名

username = WebDriverWait(driver, 10).until(

EC.presence_of_element_located((By.XPATH, "//div@class='item item-fore1'/input")))

# 清空输入栏

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, "//atext()='登录'")))

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.common.by import By

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

import time

print("case3")

# 打开浏览器

driver = webdriver.Chrome()

# 获取地址

driver.get("https://re.m.jd.com/page/homelike")

# 最大化窗口

driver.maximize_window()

# 强制等待

time.sleep(5)

# 定位登录

logn = WebDriverWait(driver, 10).until(

EC.element_to_be_clickable((By.XPATH, "//li@id='ttbar-login'/a//spantext()='请登录'")))

# 点击登录

logn.click()

# 定位用户名

username = WebDriverWait(driver, 10).until(

EC.presence_of_element_located((By.XPATH, "//div@class='item item-fore1'/input")))

# 清空输入栏

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, "//atext()='登录'")))

login.click()

time.sleep(5)

# 关闭浏览器

driver.close()

相关推荐
深圳老胡2 分钟前
STM32F4 OTA 升级双 App 方案设计与实现
笔记·stm32·单片机·代码规范
APIshop3 分钟前
淘宝详情接口全解析:从官方开放平台到第三方数据服务
java·python·api
老歌老听老掉牙10 分钟前
两个平面旋转平移坐标系间的坐标变换关系
python·算法·平面·旋转·平移
FITA阿泽要努力11 分钟前
第 1 周·第 3 讲|工具如何交给模型:工具定义、参数与结构化调用
服务器·数据库·python·agent
W.A委员会13 分钟前
PID与PID整定
python·算法
陈年老古董20 分钟前
Hive 分区表学习笔记:语法、操作、二级分区与动态分区
hive·笔记·学习
蜗牛互联网26 分钟前
Java HttpClient 调用 Gemini 图像理解与金额字段校验
java·开发语言·人工智能·后端·python
蜗牛互联网27 分钟前
Python Responses API视觉输入与本地金额校验最小实现
java·开发语言·人工智能·后端·python
Python图像识别31 分钟前
35-【2027毕设】YOLO11中草药检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计
马六六i32 分钟前
市面上专业的IP驱动产业新场景新工具哪家好
网络·人工智能·python·tcp/ip