一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化登录测试,给大家提供点参考!下面就包括测试代码和每种测试情况的截图:

'''
cnblog的登录测试,分下面几种情况:
(1)用户名、密码正确
(2)用户名正确、密码不正确
(3)用户名正确、密码为空
(4)用户名错误、密码正确
(5)用户名为空、密码正确(还有用户名和密码均为空时与此情况是一样的,这里就不单独测试了)
'''
import unittest
from selenium import webdriver
from time import sleep

class LoginCase(unittest.TestCase):

    def setUp(self):
        self.dr = webdriver.Chrome()
        self.dr.maximize_window()

    #定义登录方法
    def login(self, username, password):
        self.dr.get('https://passport.cnblogs.com/user/signin')  #cnblog登录页面
        self.dr.find_element_by_id('input1').send_keys(username)
        self.dr.find_element_by_id('input2').send_keys(password)
        self.dr.find_element_by_id('signin').click()

    def test_login_success(self):
        '''用户名、密码正确'''
        self.login('kemi_xxx', 'kemi_xxxx') #正确用户名和密码
        sleep(3)
        link = self.dr.find_element_by_id('lnk_current_user')
        self.assertTrue('菜鸟可米' in link.text)   #用assertTrue(x)方法来断言  bool(x) is True 登录成功后用户昵称在lnk_current_user里
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_success.jpg")  #截图  可自定义截图后的保存位置和图片命名

    def test_login_pwd_error(self):
        '''用户名正确、密码不正确'''
        self.login('kemi_xxx', 'kemi')  #正确用户名,错误密码
        sleep(2)
        error_message = self.dr.find_element_by_id('tip_btn').text
        self.assertIn('用户名或密码错误', error_message)  #用assertIn(a,b)方法来断言 a in b  '用户名或密码错误'在error_message里
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_error.jpg")

    def test_login_pwd_null(self):
        '''用户名正确、密码为空'''
        self.login('kemi_xxx', '')  #密码为空
        error_message = self.dr.find_element_by_id('tip_input2').text
        self.assertEqual(error_message,'请输入密码')  #用assertEqual(a,b)方法来断言  a == b  '请输入密码'等于error_message
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_pwd_null.jpg")

    def test_login_user_error(self):
        '''用户名错误、密码正确'''
        self.login('kemixing', 'kemi_xxx')  #密码正确,用户名错误
        sleep(2)
        error_message = self.dr.find_element_by_id('tip_btn').text
        self.assertIn('该用户不存在', error_message)  #用assertIn(a,b)方法来断言 a in b
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_error.jpg")

    def test_login_user_null(self):
        '''用户名为空、密码正确'''
        self.login('', 'kemi_xxx')  #用户名为空,密码正确
        error_message = self.dr.find_element_by_id('tip_input1').text
        self.assertEqual(error_message,'请输入登录用户名')  #用assertEqual(a,b)方法来断言  a == b
        self.dr.get_screenshot_as_file("D:\cnblogtest\\login_user_null.jpg")

    def tearDown(self):
        sleep(2)
        print('自动测试完毕!')
        self.dr.quit()

if __name__ == '__main__':
    unittest.main()

测试结果如下:

测试截图效果如下:

正确用户名和密码登录成功!

spacer.gif

正确用户名,错误密码登录失败!

用户名正确,密码为空,登录失败!

用户名错误,密码正确,登录失败!

用记名为空,正确密码,登录失败!


优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.51cto.com/kemixing/1886713

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。