自动化实现网站后台测试用例,自动生成测试报告

最近在学习自动化,就拿项目练练手,写了一小部分,其余的都一样,只不过是重复的工作,就只写了两个模块

一:代码框架的搭建

框架搭起来,就是头部,中间,尾部,我说的是我代码的结构...

1,头部,当然是指头文件,email和password是后台的登录密码和邮箱,不能展示,嘿嘿

自动化实现网站后台测试用例,自动生成测试报告_第1张图片

2,中间,是整体的中间的,自动化测试用例,多少条看你个人定,多少个函数就多少条,一个函数就是一个测试用例,也就是一个流程,我是这样写的:

setUp()的意思是每次测试用例执行的时候,它都要执行一次

tearDown()的意思是退出页面,也是每执行测试用例一次,它也会执行一次

class testVideo(unittest.TestCase):
      
      def setUp(self):
          pass:
      def 你创建的函数名(self):
          pass:
      ....
      def tearDown(self):
        self.driver.quit()

3,尾部,再次强调是我代码的尾部

testunit.addTest(测试类名(‘测试用例函数名’)),想加入多少条就多少条;

filename存放的位置最好是和代码文件存放在一起吧

if __name__ == "__main__":
    #定义一个单元测试容器
    testunit=unittest.TestSuite()
    #将测试用例加入进去
    testunit.addTest(testVideo('switch_window'))
    testunit.addTest(testVideo('test_user'))
    testunit.addTest(testVideo('user_manage'))
    #我存放的位置和代码文件存放的位置是一样的
    filename='D://video//testCase1//r.html'
    fp=open(filename,'wb')
    #自定义测试报告
    runner=HTMLTestRunner.HTMLTestRunner(
        stream=fp,
        title='serendipity测试报告',
        description='用例执行情况'
    )
#运行测试
    runner.run(testunit)
    fp.close()

二:上代码:

import unittest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from time import sleep
import HTMLTestRunner
url='https://admin.serendipvideo.com/#/login'
email='[email protected]'
password='wcx'
class testVideo(unittest.TestCase):
    #启动浏览器
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.get(url)
        self.driver.find_element_by_xpath('//input[@autocomplete]').send_keys(email)
        input2 = self.driver.find_element_by_xpath('//input[@type="password"]').send_keys(password)
        button = WebDriverWait(self.driver,5,0.5).until(
            EC.presence_of_element_located((By.XPATH,'//button'))
        )
        button.click()
    #句柄切换函数
    def switch_window(self):
        window_1 = self.driver.current_window_handle
        windows = self.driver.window_handles
        for current_window in windows:
            if current_window !=window_1:
                self.driver.switch_to_window(current_window)   
        print(self.driver.current_url)  
    #用户管理
    def test_user(self):
        sleep(5)
        print(self.driver.current_url)
        #点击用户管理
        user_manage = WebDriverWait(self.driver,4,0.5).until(
            EC.presence_of_element_located((By.XPATH, '//div[@class="ivu-menu-submenu-title"]'))
        )
        user_manage.click()
        #点击app用户
        app_user = WebDriverWait(self.driver,5,0.5).until(
            EC.presence_of_element_located((By.XPATH,'//li[@class="ivu-menu-item"]'))
        )
        app_user.click()
        #用户名搜索
        user_search = WebDriverWait(self.driver,5,0.5).until(
            EC.presence_of_element_located((By.XPATH,'//input[@autocomplete="off"]'))
        )
        #文件中是用户名
        filename='username.txt'
        with open(filename) as file_object:
            for line in file_object:
                print(line)
                user_search.send_keys(line)
                #搜索按钮
                search_button=WebDriverWait(self.driver,4,0.5).until(
                    EC.presence_of_element_located((By.XPATH,'//div[@class="ivu-input-group-append ivu-input-search"]'))
                )
                user_search.clear()
                sleep(5)
                search_button.click()
        #导出用户
        export_user=WebDriverWait(self.driver,6,0.5).until(
            EC.presence_of_element_located((By.XPATH,'//button[@class="ivu-btn ivu-btn-primary"]'))
        )
        export_user.click()
    #管理员
    def user_manage(self):
        sleep(5)
        #点击用户管理
        manager_manage = WebDriverWait(self.driver,4,0.5).until(
            EC.presence_of_element_located((By.XPATH, '//div[@class="ivu-menu-submenu-title"]'))
        )
        manager_manage.click()
        #点击管理员
        user_manager = WebDriverWait(self.driver,4,0.5).until(
            EC.presence_of_element_located((By.XPATH,'//*[@id="app"]/div/div[1]/div[1]/div/ul/li[1]/ul/li[2]'))
        )
        user_manager.click()
        #点击用户个人信息编辑
        wcx_manage = WebDriverWait(self.driver,5,0.5).until(
            EC.presence_of_element_located((By.XPATH,'//*[@id="app"]/div/div[2]/div[2]/div/div[2]/div/div[2]/div/div[1]/div/div[2]/table/tbody/tr[5]/td[4]/div/div/button[1]/span'))
        )
        wcx_manage.click()
        self.driver.maximize_window()
        sleep(6)
        #编辑管理员的名字
        user_name = WebDriverWait(self.driver,5,0.5).until(
            EC.presence_of_element_located((By.XPATH,'/html/body/div[11]/div[2]/div/div/div[2]/form/div[1]/div/div/input'))
        )
        user_name.clear()
        user_name.send_keys('wcx')
        sleep(5)
        #添加新用户
        add_user = WebDriverWait(self.driver,5,0.5).until(
            EC.presence_of_element_located((By.XPATH,'//button[@class="ivu-btn ivu-btn-primary"]'))
        )
        add_user.click()
        #输入用户名
        add_user_name=WebDriverWait(self.driver,5,0.5).until(
            EC.presence_of_element_located((By.XPATH,'/html/body/div[11]/div[2]/div/div/div[2]/form/div[1]/div/div/input'))
        )
        add_user_name.send_keys('wcx')

    #退出           
    def tearDown(self):
        self.driver.quit()
    

if __name__ == "__main__":
    #定义一个单元测试容器
    testunit=unittest.TestSuite()
    #将测试用例加入进去
    testunit.addTest(testVideo('switch_window'))
    testunit.addTest(testVideo('test_user'))
    testunit.addTest(testVideo('user_manage'))
    #定义报告存放的路径,支持相对路径
    filename='D://video//testCase1//r.html'
    fp=open(filename,'wb')
    #自定义测试报告
    runner=HTMLTestRunner.HTMLTestRunner(
        stream=fp,
        title='serendipity测试报告',
        description='用例执行情况'
    )
#运行测试
    runner.run(testunit)
    fp.close()






其实挺简单的,加油

三:上html报告:

自动化实现网站后台测试用例,自动生成测试报告_第2张图片

你可能感兴趣的:(selenium)