我如何搭建自动化测试框架_01配置

我如何搭建自动化测试框架_01配置

参考https://blog.csdn.net/huilan_same/article/details/76572411该博客.

1.搭建基本的UI自动化环境

1.1准备Python+PIP环境

1.2.准备selenium相关环境

确定所用的浏览器版本,可以在浏览器端输入Chrome://version来查看,如果你是Chrome浏览器的话

然后从指定地址下载chromedriver的软件,注意版本需要匹配

然后拷贝到浏览器所在位置,并将该路径加入到系统变量中,也就是PATH中

2.编写或者拷贝第一个自动化用例

因为我之前很多UI自动化用例了,就不写了,直接抄

3.问题即优化思路

脚本中引用到Chromedrive的路径,这是跟测试用例去直接关系的,希望能够抽离出来,方便以后脚本的维护

–方法,新建一个config目录,然后再config目录下面去新建config的py文件,用于从YAML文件中去读取相关配置

希望在以后的脚本中,都不要出现设置相关配置的信息,比如Chromedriver配置,以及可能会出现的LOG相关的

–方法,使用继承的方法,将UI用例统一继承于一个父类,然后再这个父类中编写相关的配置和初始化相关的信息

–这点事参考博客中没有提到的,但在我之前接触的自动化框架就有这么去实现,四个不错的主意

4.优化后的工程结构及其关键代码

工程结构如下:
----auto_test_framework
|----cases
| |----baseCase
| | |----base_case.py
| |----test_search_baidu_001.py
|----config
| |----config.yaml
|----drivers
| |----chromedriver.exe
|----generate_pro_tree.py
|----readMe
| |----编码规范.md
|----temp.py
|----utils
| |----config.py
| |----file_reader.py
| |----init.py

Process finished with exit code 0

下面是主要的测试脚本

import os
import time
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from utils.config import Config
from baseCase.base_case import BaseCase


class TestBaiDu(BaseCase):

    locator_kw = (By.ID, 'kw')
    locator_su = (By.ID, 'su')
    locator_result = (By.XPATH, '//div[contains(@class, "result")]/h3/a')

    def setUp(self):
        self.driver = webdriver.Chrome(executable_path=self.driver_path)
        self.driver.get(self.URL)

    def tearDown(self):
        self.driver.quit()

    def test_search_0(self):
        self.driver.find_element(*self.locator_kw).send_keys('爱灵1997')
        self.driver.find_element(*self.locator_su).click()
        time.sleep(2)
        links = self.driver.find_elements(*self.locator_result)
        for link in links:
            print(link.text)

    def test_search_1(self):
        self.driver.find_element(*self.locator_kw).send_keys('Python selenium')
        self.driver.find_element(*self.locator_su).click()
        time.sleep(2)
        links = self.driver.find_elements(*self.locator_result)
        for link in links:
            print(link.text)


if __name__ == '__main__':
    unittest.main()
# ————————————————
# 版权声明:本文为CSDN博主「huilan_same」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# 原文链接:https://blog.csdn.net/huilan_same/article/details/76572428

下面是从yaml配置文件中获取配置的代码

import os
import time
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from utils.config import Config


class BaseCase(unittest.TestCase):
    URL = Config().get('URL')
    base_path = os.path.dirname(os.path.abspath(__file__)) + '\..'
    # driver_path = os.path.abspath(base_path+'\drivers\chromedriver.exe') # 之前直接将Chromedriver的地址指定在这里,可灵活更改
    driver_path = r"E:\代码空间\auto_test_framework\drivers\chromedriver.exe"
    # driver_path = Config().get('driver_path')
    print("driver_path", driver_path)
    pass

下面是测试脚本所继承的类,在代码的分成的时候,这个是必要的,因为可以在这个基础的类中去定义相关的配置信息等等,这样子抽离出来之后,那么测试脚本脚可以专注于写业务脚本了,其实是可以看到这个基础类似基层unittest的类而来,在后续执行的时候,unittest框架会新建一个main函数,然后将这个类当成main函数的一部分,组装成一个新的代码,以此方式来执行

import os
import time
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from utils.config import Config


class BaseCase(unittest.TestCase):
    URL = Config().get('URL')
    base_path = os.path.dirname(os.path.abspath(__file__)) + '\..'
    # driver_path = os.path.abspath(base_path+'\drivers\chromedriver.exe') # 之前直接将Chromedriver的地址指定在这里,可灵活更改
    driver_path = r"E:\代码空间\auto_test_framework\drivers\chromedriver.exe"
    # driver_path = Config().get('driver_path')
    print("driver_path", driver_path)
    pass

配置文件如下所示

- driver_path: r"E:\代码空间\auto_test_framework\drivers\chromedriver.exe"
  URL: "http://www.baidu.com"
  job: developer
  name: water
- name: John
  age: 30

这就差不多啦,代码就可以执行啦.然后也将一部分读取配置的代码抽离出来,也将测试脚本和初始化配置的代码分隔开来了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值