运用自动化测试脚本,测试下CSDN的登录功能模块

news/2024/12/30 1:05:14/

目录

前言

python程序目录

账号密码登录模块

测试用例执行模块

运行结果示例


前言

自动化测试的重要性越来越受到人们的重视,因为它可以提高测试效率、降低测试成本并减少人为错误的出现。为了满足这个需求,越来越多的公司开始采用自动化测试来保证软件质量。

仅仅是针对CSDN账号密码登录这一小块的自动化测试;测试用例考虑的不是非常周全,仅图一乐

因为用例比较少,所以没有用自己封装的seleniumAPI,这样看着比较方便一些

python程序目录

HTMLTestRunner需要下载,不能用pip安装。

账号密码登录模块

CSDN登录-账号密码登录的功能

#!/usr/bin/python3
# _*_coding=utf-8 _*_
# @author junwei
# @date 2021/2/28 21:21
# description 测试CSDN的账号密码登录模块
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
# 登录模块
class Login(object):# 创建浏览器对象def __init__(self):self.driver = webdriver.Chrome()self.driver.implicitly_wait(2)self.driver.maximize_window()def login_csdn(self, userName, pwd):# 进入使用账号密码登录的页面url = "https://passport.csdn.net/login?code=public"self.driver.get(url)self.driver.implicitly_wait(2)self.driver.find_element_by_css_selector("#app > div > div > div.main > div.main-login > div.main-select > ul > li:nth-child(2) > a").click()# 输入用户名self.driver.find_element_by_id("all").send_keys(userName)# 输入密码self.driver.implicitly_wait(2)self.driver.find_element_by_id("password-number").send_keys(pwd)if self.is_button_enable() is True:self.driver.find_element_by_css_selector("#app > div > div > div.main > div.main-login > div.main-process-login > div > div:nth-child(6) > div > button").click()else:return "warning:login button disabled"# 判断登录按钮是否可有效def is_button_enable(self):is_enable = self.driver.find_element_by_css_selector("#app > div > div > div.main > div.main-login > div.main-process-login > div > div:nth-child(6) > div > button").is_enabled()return is_enable# 判断是否登录成功def is_login(self):ActionChains(self.driver).move_to_element(self.driver.find_element_by_css_selector("#csdn-toolbar > div > div > div.toolbar-container-right > div > div.toolbar-btn.toolbar-btn-login.csdn-toolbar-fl.toolbar-subMenu-box > a > img")).perform()self.driver.implicitly_wait(2)nick_name = self.driver.find_element_by_class_name("csdn-profile-nickName")if nick_name is not None:return Trueelse:return False# 获取提示信息def get_msg(self):# self.driver.implicitly_wait(2)time.sleep(2)  # 需要强制等待return self.driver.find_element_by_id("js_err_dom").text  # 1.用户名或密码错误 2.长时间未修改密码,请通过"忘记密码"修改密码后登录 3.用户唯一标识不能为空def __del__(self):time.sleep(2)self.driver.close()
if __name__ == '__main__':login = Login()login.login_csdn("", "s")print(login.is_button_enable())print(login.get_msg())# print(login.is_login())

测试用例执行模块

6条测试用例&运行unittest

#!/usr/bin/python3
# _*_coding=utf-8 _*_
# @author junwei
# @date 2021/2/28 21:22
# description 测试用例
import unittest
from unittest_selenium.CSDNFunction.login import Login
from unittest_selenium.HTMLTestRunner import HTMLTestRunner
class MyTestCase(unittest.TestCase):def setUp(self) -> None:print("当前用例执行开始")def tearDown(self) -> None:print("当前用例执行结束")# 测试用例001:账号密码正确,登录成功def test_001(self):login = Login()login.login_csdn("correctName", "correctPwd")is_login = login.is_login()self.assertEqual(True, is_login)# 测试用例002:不输入用户名和密码def test_002(self):login = Login()login.login_csdn("", "")is_button_enable = login.is_button_enable()self.assertEqual(False, is_button_enable)# 测试用例003:输入用户名,密码为空,登录按钮无法点击def test_003(self):login = Login()login.login_csdn("testUser", "")is_button_enable = login.is_button_enable()self.assertEqual(False, is_button_enable)# 测试用例004:输入密码,用户名为空,点击登录def test_004(self):login = Login()login.login_csdn("", "testPwd")msg = login.get_msg()self.assertEqual("用户唯一标识不能为空", msg)# 测试用例005:输入正确的用户名和错误的密码,点击登录def test_005(self):login = Login()login.login_csdn("correctName", "testPwd")msg = login.get_msg()self.assertEqual("用户名或密码错误", msg)# 测试用例006:假设已知账号A长时间未登录,输入账号名A及密码def test_006(self):login = Login()login.login_csdn("1", "testPwd")msg = login.get_msg()self.assertEqual('长时间未修改密码,请通过"忘记密码"修改密码后登录', msg)
if __name__ == '__main__':# unittest.main()# # 测试用例列表# case_list = ['test_001', 'test_002', 'test_003', 'test_004', 'test_005', 'test_006']# # 创建测试套件# suit = unittest.TestSuite()# # 将测试用例添加到测试套件中# for case in case_list:#     suit.addTest(MyTestCase(case))# 添加全部测试用例suit = unittest.makeSuite(MyTestCase)# 执行测试,verbosity=2指定为每个测试用例生成报告,run中传入要执行的测试套件unittest.TextTestRunner(verbosity=2).run(suit)# # 使用HTMLTestRunner生成HTML格式的测试报告# with open('report.html', 'wb') as f:#     HTMLTestRunner(stream=f, title="测试报告标题", description="测试报告描述信息", verbosity=2).run(suit)

运行结果示例

第一条用例失败是因为没有给正确的账号密码

 

作为一位过来人也是希望大家少走一些弯路,(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可:【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=1MDs4T0SvhL4arRoq3njIVb9HGXrRoj6&authKey=sx1h5dj77OV5obrcx6nE7Dn3sqEVuE4XrGqzqneReBJy3ojOL3oHMSH48XPKPWhW&noverify=0&group_code=574737577

 

 

 

 


http://www.ppmy.cn/news/258657.html

相关文章

Java样题

除了List、Set、Map、Queue这四个接口外,其他的都是实现类。例如,ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap、TreeMap等都是实现类,而不是接口。 . 子类构造方法调用父类构造方法要使用 super ( 实参 )&#…

电磁炉的使用知识

厨用电电磁炉的使用知识 发布时间:2004年10月4日 19时59分 电磁炉是一种新型家用电器。其基本工作原理是:利用可控的高频电磁场直接作用在具有导磁及导电性的厨具上而产生涡流发热来完成工作的。所使用厨具的材质应具有良好的导磁及导电特性&#xf…

【2023】华为OD机试真题Java CC++ Python JS Go-题目0243-模拟商场优惠打折

题目0243-模拟商场优惠打折 题目描述 模拟商场优惠打折,有三种优惠券可以用,满减券、打折券和无门槛券。 满减券:满100减10,满200减20,满300减30,满400减40,以此类推不限制使用; 打折券:固定折扣92折,且打折之后向下取整,每次购物只能用1次; 无门槛券:一张券…

2021-06-03

css做表格&#xff0c;用css设置颜色&#xff0c;字体&#xff0c;鼠标经过时变换颜色&#xff0c;增加下划线 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" co…

博士生宿舍条件太好,本科生因疫情暂住惊到结巴!网友:不然咱读个博?

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 本文系募格课堂整合&#xff0c;参考来源&#xff1a;闪电新闻、各校官微、微博、知乎 总听说博士生宿舍“豪华”&#xff0c;什么两人一间公寓式配置、独立卫浴&#xff…

企业数字化转型的四个“有为”与六个“数字化”

摘要 本文介绍了企业数字化转型中的四个关键要素&#xff0c;即有为愿景、有为领导、有为文化和有为技术&#xff0c;并探讨了数字化转型的六个关键方面&#xff0c;包括数字化策略、数字化流程、数字化产品、数字化服务、数字化营销和数字化安全。这些要素和方面共同构成了成…

熬夜整理21条避坑指南,细聊该如何让自动化完美运行!

目录 1、引言 2、避坑内容总结 2.1无法定位到元素 2.2 Indentation Error 2.3 PO设计模式类 2.4 页面封装类中没有已定义函数的问题 2.4.1 提示没有该方法 2.4.2 没有定义好的函数 2.5 parater must be str 2.6 继承 2.7 not all arguments curerted during string …

Linux运维技术学习与分享:构建稳定高效的系统管理与自动化(1)

Linux基础知识 Linux操作系统概述Linux发行版的选择和安装Shell基础和常用命令用户和权限管理文件系统和文件操作进程管理和常用工具 Shell脚本编程 Shell脚本基础语法和结构变量、运算符和条件语句循环和函数文件操作和文本处理脚本调试和错误处理实例&#xff1a;常见运维任…