• 博客系统自动化测试


    测试用例设计

    测试项目链接:(用户名:lisi,密码:123)
    在这里插入图片描述

    自动化测试

    1.登录功能

    登录功能测试采用ddt数据驱动,测试数据如下:

    [“zhangsan”, “123”, u"博客列表"],
    [“lisi”, “123”, u"博客列表"],
    [“zhangsan”, “12”, u"博客列表"],
    [“zhang”, “123”, u"博客列表"],
    [“zhangsan”, “”, u"博客列表"],
    [“”, “”, u"博客列表"]

    其中数据1、2为有效数据,3、4、5、6位无效数据。

    测试脚本如下:

    from ddt import data, ddt, unpack, file_data
    from selenium import webdriver
    import unittest
    import time
    import os
    
    
    @ddt
    class Login(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.url = "http://43.138.70.241:8080/blog/blog_login.html"
            self.driver.maximize_window()
            self.verificationErrors = []
            self.accept_next_alert = True
    
        def tearDown(self):
            self.driver.quit()
            self.assertEqual([], self.verificationErrors)
    
        @data(["zhangsan", "123", u"博客列表"], ["zhangsan", "123", u"博客列表"],
              ["zhangsan", "12", u"博客列表"], ["zhang", "123", u"博客列表"],
              ["zhangsan", "", u"博客列表"], ["", "", u"博客列表"])
        @unpack
        def test_logins(self, username, password, expected_value):
            driver = self.driver
            url = self.url
            driver.get(url)
            time.sleep(2)
            driver.find_element_by_id("username").send_keys(username)
            driver.find_element_by_id("password").send_keys(password)
            driver.find_element_by_id("submit").click()
            time.sleep(2)
            self.assertEqual(expected_value, driver.title, msg="登陆失败")
            time.sleep(2)
            driver.find_element_by_css_selector(".nav > a:nth-child(6)").click()
            time.sleep(2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    HTML报告:
    在这里插入图片描述

    2.显示博客

    测试脚本如下:

    class Login(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Firefox()
            self.driver.implicitly_wait(30)
            self.url = "http://43.138.70.241:8080/blog/blog_login.html"
            self.driver.maximize_window()
            self.verificationErrors = []
            self.accept_next_alert = True
    
        def tearDown(self):
            self.driver.quit()
            self.assertEqual([], self.verificationErrors)
    
        def test_shows(self):
            driver = self.driver
            url = self.url
            driver.get(url)
            time.sleep(2)
            driver.find_element_by_id("username").send_keys("lisi")
            driver.find_element_by_id("password").send_keys("123")
            driver.find_element_by_id("submit").click()
            time.sleep(2)
            driver.find_element_by_css_selector("div.blog:nth-child(1) > a:nth-child(4)").click()
            time.sleep(2)
            self.assertEqual("博客详情页", driver.title, msg="点击查看博客跳转失败")
            time.sleep(2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    3.写博客和删除博客

    测试脚本如下:

        def test_write(self):
            driver = self.driver
            url = self.url
            driver.get(url)
            time.sleep(2)
            driver.find_element_by_id("username").send_keys("lisi")
            driver.find_element_by_id("password").send_keys("123")
            driver.find_element_by_id("submit").click()
            time.sleep(2)
            driver.find_element_by_css_selector(".nav > a:nth-child(5)").click()
            driver.find_element_by_id("title").send_keys("自动化测试")
            time.sleep(2)
            driver.find_element_by_css_selector(".CodeMirror > div:nth-child(1) > textarea:nth-child(1)").send_keys(Keys.CONTROL,'a')
            time.sleep(1)
            driver.find_element_by_css_selector(".CodeMirror > div:nth-child(1) > textarea:nth-child(1)").send_keys(Keys.CONTROL,'x')
            time.sleep(1)
            driver.find_element_by_css_selector(".CodeMirror > div:nth-child(1) > textarea:nth-child(1)").send_keys("这是使用自动化测试生成的博客")
            time.sleep(2)
            driver.find_element_by_id("submit").click()
            self.assertEqual("博客列表", driver.title, msg="点击发布博客跳转失败")
            time.sleep(2)
            driver.find_element_by_css_selector("div.blog:nth-child(1) > a:nth-child(4)").click()
            time.sleep(2)
            self.assertEqual("博客详情页", driver.title, msg="点击查看博客跳转失败")
            time.sleep(2)
            driver.find_element_by_css_selector(".nav > a:nth-child(7)").click()
            self.assertEqual("博客列表", driver.title, msg="点击删除博客跳转失败")
            time.sleep(2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    4.注销

    测试脚本如下:

        def test_logout(self):
            driver = self.driver
            url = self.url
            driver.get(url)
            time.sleep(2)
            driver.find_element_by_id("username").send_keys("lisi")
            driver.find_element_by_id("password").send_keys("123")
            driver.find_element_by_id("submit").click()
            time.sleep(2)
            driver.find_element_by_css_selector(".nav > a:nth-child(6)").click()
            self.assertEqual("登录页面", driver.title, msg="点击注销跳转失败")
            time.sleep(2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    5.测试套件

    以下是测试套件:

    def createsuite():
        discover = unittest.defaultTestLoader.discover('./test', pattern='test*.py', top_level_dir=None)
        print(discover)
        return discover
    
    
    if __name__ == "__main__":
        curpath = sys.path[0]
        print(sys.path)
        print(sys.path[0])
    
        if not os.path.exists(curpath + '/result_report'):
            os.makedirs(curpath + '/result_report')
    
        now = time.strftime("%Y-%m-%d-%H %M %S", time.localtime(time.time()))
    
        filename = curpath + '/result_report/' + now + 'result_report.html'
        with open(filename, 'wb') as fp:
            runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'测试报告',
                                                   description=u'用例执行情况', verbosity=2)
            suite = createsuite()
            runner.run(suite)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    6.生成报告

    在这里插入图片描述

  • 相关阅读:
    逆向-还原代码之url_encode (Interl 32)
    PC 的新 AI 操作系统
    从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
    iOS开发基础109-网络安全
    3、你真的把MPC搞懂了吗
    【LeetCode热题100】【子串】最小覆盖子串
    40 道Typescript 面试题及其答案与代码示例(上)
    Spring Boot 应用启动时 java.lang.reflect.InaccessibleObjectException 问题的解决
    设计模式之工厂方法模式应用例题
    算法金 | LSTM 原作者带队,一个强大的算法模型杀回来了
  • 原文地址:https://blog.csdn.net/weixin_46429649/article/details/126815017