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

相关推荐
私人珍藏库5 小时前
[Android] 会计快题库 -财会职称考试刷题学习
android·人工智能·学习·app·软件·多功能
闻道且行之5 小时前
TurboOCR:基于PP-OCRv6的极速Windows离线OCR工具,深度解析3.4GB依赖背后的技术架构
c++·人工智能·python·qt·机器学习·ocr
许彰午6 小时前
95_Python内存管理与垃圾回收
开发语言·python
骄阳如火7 小时前
Python 性能深度剖析:从“被诟病的慢”到“Rust 重塑”的拐点
python
满怀冰雪7 小时前
03-第一个 Paddle 程序:Tensor 创建、计算与设备管理
人工智能·python·paddle
CClaris8 小时前
大模型量化从0到1(九):用 llama.cpp 把模型转成 GGUF 并跑本地推理
人工智能·pytorch·python·深度学习·llama
学编程的小虎8 小时前
SenseVoice微调
人工智能·python·自然语言处理
诸葛说抛光8 小时前
国内大型汽车改装展览会定展 佛山改装 佛山汽车赛事
python·汽车
chouchuang8 小时前
day-030-综合练习-笔记管理器
开发语言·笔记·python
乖巧的妹子9 小时前
Python基础核心知识点详解:内置函数、运算符、字符串方法、数据结构与类型转换
python