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

相关推荐
Upsy-Daisy2 分钟前
IOTA 学习笔记(八):本地启动 IOTA Localnet
笔记·学习
古方路杰出青年5 分钟前
学习笔记:语音信号读取与显示——理论分析与技术详解(含代码块)
笔记·学习·语音识别
中屹指纹浏览器6 分钟前
2026指纹浏览器缓存机制深挖:HTTP强缓存与协商缓存隐性风控陷阱
经验分享·笔记
小江的记录本9 分钟前
【JVM虚拟机】类加载机制:类加载器、双亲委派模型、好处、破坏双亲委派的场景(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
Sean_VIP11 分钟前
FreeRTOS项目程序框架介绍(五)
笔记·stm32
小陶来咯16 分钟前
FunctionCall实现与Prompt调优
python·ai·prompt
AI 编程助手GPT33 分钟前
ChatGPT 新手入门与实战操作指南
开发语言·人工智能·git·python·chatgpt
原创小甜甜39 分钟前
OOM 排查复盘:Hutool 序列化 Request 导致 Java Heap Space
java·开发语言·python
gf132111141 分钟前
【精确查找python脚本是否在运行】
linux·前端·python
zhangfeng113343 分钟前
DeepSeek V4 适配华为昇腾950 难度及开源情况
人工智能·pytorch·python·机器学习·华为·开源