Personal blog system project test

Table of contents

1. Test case design

 2. Automated testing


1.   Test case design

Test the functionality, interface, compatibility, usability, security, and performance of the system.

 2.  Automated testing

Use the Unittes framework to test the login, view article details, and add article functions in the system, and generate a test report.

Test report link: http://localhost:63342/hwhw/myblog/resultReport/2022-15-31-15%2015%2051-resultReport.html http://localhost:63342/hwhw/myblog/resultReport/2022-15 -31-15%2015%2051-resultReport.html

APIs commonly used by WebDriver: 

from selenium import webdriver
import time

driver = webdriver.Chrome()
url = "http://124.222.237.227:8080/myblog/login.html"
driver.maximize_window()
time.sleep(3)
driver.get(url)
#用id来定位,登录
driver.find_element_by_id("username").send_keys("123")
driver.find_element_by_id("password").send_keys("123123123")
time.sleep(4)
driver.find_element_by_id("submit").click()
time.sleep(4)

#用xpath打开一篇文章
driver.find_element_by_xpath("//*[@id='artlist']/div[2]/div[4]/a[1]").click()
time.sleep(3)

# 浏览器后退
driver.back()
time.sleep(3)

#用link-text来定位
driver.find_element_by_link_text("首页").click()
time.sleep(4)

#用css_selector定位,进入首页
driver.find_element_by_css_selector("#pageDiv > a:nth-child(2)").click()
time.sleep(4)

#添加文章页面
driver.find_element_by_xpath("/html/body/div[1]/a[3]").click()
time.sleep(4)

#用xpath定位,进入首页
driver.find_element_by_xpath("/html/body/div[1]/a[1]").click()
time.sleep(3)

#退出
driver.find_element_by_id("islogin").click()
time.sleep(4)

driver.quit()

test case1 (unit test case): 

from selenium import webdriver
import unittest
import time
from selenium.common.exceptions import NoAlertPresentException
import os

class testCase1(unittest.TestCase):
# 有setUp的部分,默认执行
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.url = "http://124.222.237.227:8080/myblog/login.html"
        self.driver.get(self.url)
        self.driver.maximize_window()
        time.sleep(3)

# tearDown,在test_XXX方法执行完之后默认会调用
    def tearDown(self):
        self.driver.quit()


# 有test_XXX的部分,默认执行
#    @unittest.skip("skipping")
    def test_baidu1(self):
        driver=self.driver
        driver.find_element_by_id("username").send_keys("123")
        driver.find_element_by_id("password").send_keys("123123123")
        time.sleep(4)
        driver.find_element_by_id("submit").click()
        time.sleep(4)
        driver.find_element_by_xpath("//*[@id='artlist']/div[2]/div[4]/a[1]").click()
        time.sleep(3)

    @unittest.skip("skipping")
    def test_baidu2(self):
        driver=self.driver
        driver.find_element_by_id("username").send_keys("123")
        driver.find_element_by_id("password").send_keys("123123123")
        time.sleep(4)
        driver.find_element_by_id("submit").click()
        time.sleep(4)
        driver.find_element_by_xpath("//*[@id='artlist']/div[2]/div[4]/a[1]").click()
        time.sleep(3)

    # 判断alert是否存在,可删除
    def is_alert_exist(self):
        try:
            self.driver.switch_to.alert
        except NoAlertPresentException as e:
            return False
        return True

    if __name__=="__main__":
        unittest.main(verbosity=0)

test case2 (unit test case): 

from selenium import webdriver
import unittest
import time
from selenium.common.exceptions import NoAlertPresentException
import os

class testCase1(unittest.TestCase):
# 有setUp的部分,默认执行
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.url = "http://124.222.237.227:8080/myblog/login.html"
        self.driver.get(self.url)
        self.driver.maximize_window()
        time.sleep(3)

# tearDown,在test_XXX方法执行完之后默认会调用
    def tearDown(self):
        self.driver.quit()


# 有test_XXX的部分,默认执行
#    @unittest.skip("skipping")
    def test_baidu1(self):
        driver=self.driver
        driver.find_element_by_id("username").send_keys("123")
        driver.find_element_by_id("password").send_keys("123123123")
        time.sleep(4)
        driver.find_element_by_id("submit").click()
        time.sleep(4)
        driver.find_element_by_xpath("/html/body/div[1]/a[3]").click()
        time.sleep(4)

    @unittest.skip("skipping")
    def test_baidu2(self):
        driver=self.driver
        driver.find_element_by_id("username").send_keys("123")
        driver.find_element_by_id("password").send_keys("123123123")
        time.sleep(4)
        driver.find_element_by_id("submit").click()
        time.sleep(4)
        driver.find_element_by_xpath("//*[@id='artlist']/div[2]/div[4]/a[1]").click()
        time.sleep(3)

    # 判断alert是否存在,可删除
    def is_alert_exist(self):
        try:
            self.driver.switch_to.alert
        except NoAlertPresentException as e:
            return False
        return True

    if __name__=="__main__":
        unittest.main(verbosity=0)

test suite (a collection of unit test cases) && test runner (execute unit tests):

import unittest
from myblog import test112
from myblog import test113

def createSuite():
    suite = unittest.TestSuite()
    #suite.addTest(test001.testCase1("test_baidu1"))
    #suite.addTest(test001.testCase1("test_baidu2"))
    #suite.addTest(test003.testCase2("test_baidu1"))
    #suite.addTest(test003.testCase2("test_baidu2"))

    # makeSuite
    #suite.addTest(unittest.makeSuite(test001.testCase1))
    #suite.addTest(unittest.makeSuite(test003.testCase2))

    #TestLoader
    #suite1 = unittest.TestLoader.loadTestsFromTestCase(test001.testCase1)
    #suite2 = unittest.TestLoader.loadTestsFromTestCase(test003.testCase2)
    #suite.addTest([suite1,suite2])

    # return suite

    #最简便,把指定文件夹下,多有特定个事命名的脚本中类的所有以test开头的py文件
    discover = unittest.defaultTestLoader.discover('../myblog',pattern='test11*.py',top_level_dir=None)
    return discover

if __name__=="__main__":
    suite = createSuite()
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

test report (generate test report):

import unittest
import time
from myblog import test112
from myblog import test113
import os,sys
import HTMLTestRunner

def createSuite():
    discover = unittest.defaultTestLoader.discover('../myblog',pattern='test11*.py',top_level_dir=None)
    print(discover)
    return discover

if __name__=="__main__":
    # 索取当前文件所在的文件路径
    curpath = sys.path[0]
    print(curpath)
    if not os.path.exists(curpath + "/resultRepost"):
        os.mkdir(curpath + "/resultReport")
    now = time.strftime("%Y-%M-%d-%H %M %S",time.localtime(time.time()))
    filename = curpath + "/resultReport/" + now +"-" + "resultReport.html"
    with open(filename, 'wb') as fp:
        runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"测试报告",description=u"用例执行的结果", verbosity=2)
        suite =createSuite()
        runner.run(suite)

Guess you like

Origin blog.csdn.net/m0_48273471/article/details/126086011
Recommended