编写简单的自动化测试用例

环境部署

自动化工具:selenium + webdriver
脚本语言为:Python3.x
浏览器:Chrome
系统环境:window7
编译工具:Pycharm

基本目录架构

  • Business:测试业务抽象流程(url登录操作)
  • Common:项目相关的抽象通用代码,与测试业务无关
  • Test_Case:测试用例
  • Test_Data:存放数据层的数据文件(账号密码,搜索内容等)
  • Test_Suite组织测试套件(组装不执行)
  • run.py 执行测试用例统一运行入口
  • report:测试报告的目录
  • tools:测试中使用的一些工具

 web测试登录用例

创建一个test开头的测试用例py

#引入测试框架模块
import unittest
#引入web驱动模块
from selenium import webdriver
#引入封装的url
from Business.base_url import url_index
# ddt引入数据驱动
from HTMLReport import ddt
# 引入读取文件函数
from Common.tools.read_data import read_txt
# 打印日志
import logging
# 截图
from HTMLReport import addImage
from Common.selenium_tools import get_driver
from Business.bs_login import login
#数据驱动装饰器
@ddt.ddt
class TestLogin(unittest.TestCase):
    """登录测试用例类
       1. 打开浏览器
       2. 打开网站
       3. 进入登录页
       4. 输入{用户名}
       5. 输入{密码}
       6. 点击登录按钮
       7. {断言}
       8. 关闭浏览器
       """

    def setUp(self) -> None:
        '''测试前执行'''
        # 打开浏览器
        self.driver = get_driver()
        pass

    def tearDown(self) -> None:
        '''测试后执行'''
        '''关闭浏览器'''
        self.driver.quit()
        logging.info(f'关闭浏览器:{self.driver.name}')
    pass
    # 捡多个包
    @ddt.unpack
    # 解包裹
    @ddt.data(
        # 解包
        *read_txt("Test_Data/login_user_password")
    )
    # 用例test开头
    def test_login(self, username, password, assert_type):
        '''
                登录测试用例
                :param username: 用户名
                :param password: 密码
                :param assert_type: 断言类型
                1.成功,2.密码错误,3.密码空,4.用户名空
                :return:
                '''
       
        # 调用登录操作
        login(self.driver,username,password)

        if assert_type == '1':
            # 获取登录成功欢迎页
            text = self.driver.find_element_by_id('ECS_MEMBERZONE').text
            logging.info(f'获取登录成功欢迎信息:{text}')
            self.assertIn('您好', text)
            self.assertIn('欢迎来到', text)
            self.assertIn('退出', text)
        elif assert_type == '2':
            text = self.driver.find_element_by_xpath("//*[contains(@class,'icon-minus-sign')]/..").text
            self.assertIn('用户名或密码错误', text)
            logging.info(f'获取失败警告信息:{text}')
        elif assert_type == "3":
            text = self.driver.find_element_by_xpath('//*[contains(@class,"icon-minus-sign")]/..').text
            logging.info(f'获取失败警告信息:{text}')
            self.assertIn("请输入密码", text)
        elif assert_type == "4":
            text = self.driver.find_element_by_xpath('//*[contains(@class,"icon-minus-sign")]/..').text
            logging.info(f'获取失败警告信息:{text}')
            self.assertIn("请输入用户名", text)
            pass
        else:
            raise ValueError(f'错误断言类型:{assert_type}')

方法封装,封装一些使用频繁的方法

封装存放的网页(Business)

'''存放网页'''
url_index = 'http://192.168.2.253/dsc/'

封装点击登录用例的操作(Business)

from Business.base_url import url_index
from HTMLReport import addImage
import logging
# driver的祖先,谷歌也是继承与它
from selenium.webdriver.remote.webdriver import WebDriver
def login(driver:WebDriver,username,password):
    '''
                  登录测试用例
                  :param username: 用户名
                  :param password: 密码
                  :param assert_type: 断言类型
                  1.成功,2.密码错误,3.密码空,4.用户名空
                  :return:
                  '''
    # 2. 打开网站
    logging.info(f'打开网站:{url_index}')
    driver.get(url_index)
    addImage(driver.get_screenshot_as_base64(), '打开网站',
             f'打开网站:{driver.current_url}')
    # 3. 进入登录页
    logging.info('进入登录页')
    driver.find_element_by_link_text('请登录').click()
    # 4. 输入{用户名}
    logging.info(f'输入用户名:{username}')
    driver.find_element_by_id('username').send_keys(username)
    # 5. 输入{密码}
    logging.info(f'输入密码:{password}')
    driver.find_element_by_id('nloginpwd').send_keys(password)
    # 6. 点击登录按钮
    logging.info(f'点击登录按钮')
    driver.find_element_by_id('loginSubmit').click()

封装加载网页方法(Common--tools)

# 网页驱动
from selenium import webdriver
# 加载
import logging

def get_driver():
    '''
    获取一个浏览器对象
    :return:driver
    '''
    #        使用hub远程操作 打开浏览器
    driver = web
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值