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()

相关推荐
雪隐6 小时前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱17 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot19 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海1 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱1 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽1 天前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码1 天前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱2 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵2 天前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio2 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机