前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sweetest框架学习

Sweetest框架学习

作者头像
zx钟
发布2019-07-19 16:35:24
9280
发布2019-07-19 16:35:24
举报
文章被收录于专栏:测试游记测试游记

1.从Github上获取源代码并用Pycharm打开

项目地址:

https://github.com/tonglei100/sweetest.git

将两个sweetest都设置为Sources Root,不然导包处会出现红线

start

设置为Sources Root

2.开始阅读

1.初始化自动化实例

找到start.py,可以发现第24行应该是程序入口

sweet = Autotest(plan_name, sheet_name, desired_caps, server_url)

使用ctrl+鼠标左键跳转至Autotest类

1.1创建日志文件夹的方式

第29行:

代码语言:javascript
复制
1#发现Autotest类中使用如下方式创建日志存放文件夹
2for p in ('JUnit', 'report', 'snapshot'):
3    mkdir(p)
4#跳转至mkdir处,此处使用Python标准库之pathlib
5from pathlib import Path
6def mkdir(p):
7    path = Path(p)
8    if not path.is_dir():
9        path.mkdir()
Python标准库之pathlib

https://www.cnblogs.com/juneman/p/8974505.html

  1. 导入
  • from pathlib import Paht
  1. 初始化 1p = Path() # 当前目录 2p = Path('a','b','c/d') # 当前目录下的a/b/c/d(相对路径) 3p = Path('/etc') # /etc目录(绝对路径)
  2. 路径拼接和分解
  • 拼接操作符: /
  • 分解:parts 1# 拼接 2p = Path() 3# p -> PosixPath('.') 4p = p / 'a' 5# p -> PosixPath('a') 6p1 = 'b' / p 7# p1 -> PosixPath('b/a') 8p2 = Path('c') 9p3 = p2/p1 10# p3 -> PosixPath('c/b/a') 11 12# 分解 13p3.parts 14# ('c', 'b', 'a')
  1. is_dir() 是否是目录
  2. 创建目录 path对象的mkdir方法: def mkdir(self, mode=0o777, parents=False, exist_ok=False):
  • parents:是否创建父目录,True等同mkdir -p;False时,父目录不存在,则抛出FileNotFoundError
  • exist_ok:在3.5版本加入。False时,路径存在,抛出FileExistsError;True时,FileExistsError被忽略
1.2导入实例化对象

第32行:

g.plan_name = file_name.split('-')[0]

使用ctrl点击g进行跳转至sweetest/sweetest/globals.py

发现导入的是g = Global()的实例化对象g

找到导包的语句from sweetest.globals import g 所以应该是在导入的时候触发的实例化操作

1.3规定内容常量化

第33行-35行,38行:

self.testcase_file = str(Path('testcase') / (file_name + '-' + _testcase + '.xlsx'))

拼接testcase_file文件路径使用_testcase来自

from sweetest.config import _testcase, _elements, _report

代码语言:javascript
复制
1# 文件名后缀
2_testcase = 'TestCase'  # '测试用例'
3_elements = 'Elements'  # '页面元素表'
4_report = 'Report'      # '测试结果'

这样就可以规定读取文件/输出报告的格式

1.4 EXCEL操作再次封装

第36,37,39行:

导入语句:from sweetest.utility import Excel

点击Excel跳转,由于现有的Excel操作库分为读取excel信息和将信息写入excel所以定义了class将二者封装在一起

代码语言:javascript
复制
1import xlrd
2import xlsxwriter

通过def __init__(self, file_name, mode='r'):可以看出,实例化时需要指定操作模式,读取的操作相对简单不进行介绍

写的操作用于报告的输出,所以写的过程中增加了报告通过状态的判断,不同状态有不同的样式例如:

代码语言:javascript
复制
1red = self.workbook.add_format({'bg_color': 'red', 'color': 'white'})
2if str(data[i][j]) == 'Fail':
3    sheet.write(i, j, str(data[i][j]), red)

2.执行自动化测试

start.py中sweet.plan()开始执行测试,点击plan进行跳转

可以发现第70行self.run(sheet_name)正式开始执行用例

2.1使用init函数设置类中属性

使用类似于__init__的函数来修改类中的属性

2.2元素等待/页面刷新超时时间

可以在打开实例化浏览器的时候设置元素等待/页面刷新超时时间

时间可以存放在一个文件中方便后续修改

代码语言:javascript
复制
1# 等待元素超时时间
2self.driver.implicitly_wait(element_wait_timeout)  # seconds
3# 页面刷新超时时间
4self.driver.set_page_load_timeout(page_flash_timeout)  # seconds
2.3开始执行用例

第117行ts.run()

进入函数后首先是执行self.testsuite_start()计数器+1并记录开始时间

第136行result = self.setup(testcase, case)进入函数def setup(self, testcase, case):

在函数内部定义了一个函数def run_setup(testcase):函数中

代码语言:javascript
复制
1tc = TestCase(testcase)
2tc.run()

此处真正开始执行用例

getattr(web, step['keyword'].lower())(step)

sweetest/sweetest/keywords/web.py处可以定义相关页面操作关键字

getattr

getattr(object, name[, default])

  • object -- 对象。
  • name -- 字符串,对象属性。
  • default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

以open关键字为例,其中值得学习的内容:

2.3.1清理缓存/cookies
代码语言:javascript
复制
1if step['data'].get('清理缓存', '') or step['data'].get('cookie', ''):
2    g.driver.delete_all_cookies()
初次打开页面

获取当前窗口handle: handle = g.driver.current_window_handle 注册窗口名称和handle: self.register(step, handle)

2.3.2打开新窗口后将其加入窗口列表里
代码语言:javascript
复制
1#value -> 'https://www.baidu.com/'
2js = "window.open('%s')" % value 
3g.driver.execute_script(js)
4# 判断是否打开了新的窗口,并将新窗口添加到所有窗口列表里
5all_handles = g.driver.window_handles
6for handle in all_handles:
7    if handle not in w.windows.values():
8        w.register(step, handle)

register的逻辑:

如果有提供新窗口名字,则使用该名字,否则使用默认名字:HOME 如果存在同名窗口: 1.清除同名旧窗口绑定的页面 2.切换到同名旧窗口去关闭它 3.从窗口资源池 g.windows 里剔除 切回当前窗口,添加到窗口资源池 g.windows,把当前窗口名字改为新窗口名称

(未完待续,也可能懒得写了...)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.从Github上获取源代码并用Pycharm打开
  • 2.开始阅读
    • 1.初始化自动化实例
      • 1.1创建日志文件夹的方式
      • 1.2导入实例化对象
      • 1.3规定内容常量化
      • 1.4 EXCEL操作再次封装
    • 2.执行自动化测试
      • 2.1使用init函数设置类中属性
      • 2.2元素等待/页面刷新超时时间
      • 2.3开始执行用例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档