• 0
  • 0
分享
  • 【自动化测试脚本】测试下CSDN的登录功能模块——软件测试圈
  • 北极 2021-03-12 15:32:17 字数 4934 阅读 1350 收藏 0

前言

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

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

python程序目录

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

2.png

账号密码登录模块

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 True
        else:
            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)

运行结果示例

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

1.png


作者:写Bug的徐同学

原文链接:https://blog.csdn.net/weixin_45890734/article/details/114255426


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   今天我们就来看看常见的几个疑惑的职业生涯迷茫的问题  1、我是半路出家,其他行业转到测试的,是不是很减分  回答:给大家讲个实际情况:我曾经的培训班同学中,计算机相关专业毕业的,只有10%左右,而从毕业就开始做测试的,当时全班就我自己。  其他同学原来干什么的都有,有做导游的,有做美容讲师的,有做微商的,有饭店服务员,有理发师,有快递小哥,还有的是街溜子,混混,家里蹲,未成年等等,他们都未曾放弃过,花着2万的学费去学基础入门知识三个月,照样出去干。  还有不少大神,比如粉丝群里的某神,之前是流水线工人。某大佬,连高中文凭都没有。某哥,之前摆地摊的才从事测试1年。而他们现在的薪资都是30w,...
            0 0 441
            分享
          •   如何使用Greenshot做好测试过程中的截图留痕工作?  在功能测试中,执行每一条测试用例时,都需要对这条用例的执行结果进行记录,以防后续在与开发沟通交流缺陷的过程中出现缺陷不能复现等情况发生。  可是,不好用的截图工具以及截图文件的整理都大大地增加了测试的工作量。因此,这就需要一款方便的截图工具来提升我们测试截图留痕的工作效率,在朋友的推荐下,我选择了Greenshot。  Greenshot是可配置且易于使用的,而且是一款免费的屏幕快照工具。话不多说,接下来我为大家介绍一下如何使用Greenshot做好测试过程中的截图留痕工作。  Greenshot的安装这里就不做过多介绍,大家记得...
            13 13 1425
            分享
          • 常用的Android自动化测试框架包括UIAutomator、Appium以及Monkeyrunner等;其中,UIAutomator是谷歌在发布Android4.1版本时推出的一款基于Java语言的UI测试框架,由此,UIAutomator只能运行在4.1及其以上版本中。本篇文章将为大家介绍如何搭建基于Java+UIAutomator的测试环境。一、UIAutomator简介首先,作为Google自家推出的一款开源的UI自动化测试框架,其稳定性和可靠性可以得到极大的保障,运行时也有更多的权限。其次,UIAutomator可以跨进程操作,运行速度较快;但是UIAutomator不支持Andro...
            0 3 2712
            分享
          • 读者提问:PC 端长截图工具有推荐的吗 ?阿常回答:1、QQ 截图2、Snipaste3、FastStone Capture4、verycapture5、ShareX6、iShot(Mac)阿常碎碎念:看完今天的分享对你是不是有所启发呢,有任何想法都欢迎大家私信阿常,一起探讨交流。
            0 0 926
            分享
          •   据thechinaproject报道,米哈游正进行避开30%“苹果税”的尝试,从而在收入方面获得更多显著增长。  外媒表示,苹果公司和米哈游似乎在今年变得比以往更亲近。  今年三月,苹果首席执行官TimCook访问中国时,曾停留在米哈游上海办公室,库克与《原神》背后的“团队”,进行了会面,并与米哈游创始人互致问候。  而在此之后的苹果的年度发布会上,苹果展示了两款米哈游的游戏,以展示新款iPhone15系列在游戏性能方面的表现。  然而在幕后,这两家公司一直存在分歧。自八月以来,米哈游试图两次从而绕过30%的“苹果税”(IT之家注:苹果在AppStore内的每笔交易中收取高达30%的佣金)...
            0 0 524
            分享
      • 51testing软件测试圈微信