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//span[text()='请登录']")))

#点击登录

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, "//a[text()='登录']")))

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//span[text()='请登录']")))

# 点击登录

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, "//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.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//span[text()='请登录']")))

# 点击登录

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, "//a[text()='登录']")))

login.click()

time.sleep(5)

# 关闭浏览器

driver.close()

相关推荐
Gerardisite2 小时前
企业微信自动化开发新思路: RPA 接入方案
java·python·自动化·企业微信·rpa
聆风吟º2 小时前
【Python编程日志】Python入门基础(一):标识符 | 关键字 | 注释
python·注释·标识符·关键字
2501_914245932 小时前
如何测试FSFO观察者进程的自动切换_模拟主库断网与Observer心跳超时
jvm·数据库·python
疯狂打码的少年2 小时前
内存管理三雄对决:C、Java、Python 的堆区、栈区、常量区、静态区深度解析
java·c语言·python
m0_734949792 小时前
如何按优先级控制 Flex 容器内子元素的截断顺序
jvm·数据库·python
我是发哥哈2 小时前
横向评测:主流AI培训方案的关键维度对比
大数据·人工智能·学习·机器学习·chatgpt
智者知已应修善业2 小时前
【100赫兹50分频得到2赫兹频率74HC14+74HC160】2023-6-26
驱动开发·经验分享·笔记·硬件架构·硬件工程
GISer_Jing2 小时前
Todos
前端·人工智能·学习