Skip to content

Commit

Permalink
1.修复文档构建的大部分warning
Browse files Browse the repository at this point in the history
2.testbase.conf.settings加载优化
3.静态文件放到qta_statics模块
4.修复html报告无法离线展示,以及ie不兼容的问题
5.SettingsMixin放到配置项文档里面
  • Loading branch information
guyingzhao committed Jan 7, 2019
1 parent 64e1b0e commit b66c2a8
Show file tree
Hide file tree
Showing 34 changed files with 670 additions and 346 deletions.
45 changes: 45 additions & 0 deletions .editorconfig
@@ -0,0 +1,45 @@
# https://editorconfig.org/
# Refer: https://github.com/django/django/blob/master/.editorconfig

root = true

[*]
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = lf
charset = utf-8

# Docstrings and comments use max_line_length = 119
[*.py]
max_line_length = 119

# Use 2 spaces for the HTML files
[*.html]
indent_size = 2

# The JSON files contain newlines inconsistently
[*.json]
indent_size = 2
insert_final_newline = ignore

[**/admin/js/vendor/**]
indent_style = ignore
indent_size = ignore

# Minified JavaScript files shouldn't be changed
[**.min.js]
indent_style = ignore
insert_final_newline = ignore

# Makefiles always use tabs for indentation
[Makefile]
indent_style = tab

# Batch files use tabs for indentation
[*.bat]
indent_style = tab

[docs/**.txt]
max_line_length = 79
1 change: 1 addition & 0 deletions MANIFEST.in
@@ -0,0 +1 @@
global-include *.txt *.TXT qta_statics/*.*
2 changes: 1 addition & 1 deletion docs/testbase/apiref.rst
@@ -1,5 +1,5 @@
接口文档
====
========

.. toctree::
:maxdepth: 1
Expand Down
6 changes: 3 additions & 3 deletions docs/testbase/datadrive.rst
@@ -1,5 +1,5 @@
数据驱动测试
================
===============

所谓数据驱动测试,即是将测试数据和测试用例分离,可以实现一份测试用例跑多份的测试数据,在一些业务场景的测试下可以大大提升测试用例开发和维护的成本。

Expand Down Expand Up @@ -217,9 +217,9 @@ dict类型测试数据
这里的“B”是数据驱动的数据的名字,按照以上HelloDataTest的定义,的对应的数据就是1234234。


====================
========================
设置单个数据驱动用例属性
====================
========================

由于数据驱动方式生成的多个测试用例,虽然测试数据不同,但是由于都是同一个Python类,因此都具有相同的测试用例属性(优先级、状态、描述等)。
如果需要设置单个数据对应的生成的用例的属性,则要求测试数据必须是dictionary的类型,测试用例的属性可以在dictionary数据中的“__attrs__”键值来定义::
Expand Down
10 changes: 5 additions & 5 deletions docs/testbase/dist.rst
@@ -1,11 +1,11 @@
测试项目打包
====
============

QTA内置测试项目打包的功能,方便将测试项目打包并发布给支持QTA测试执行的执行系统

====
========
执行打包
====
========

调用测试项目的manage.py::

Expand All @@ -19,9 +19,9 @@ QTA内置测试项目打包的功能,方便将测试项目打包并发布给

.. _RunDistPkg:

====
========
使用包
====
========

对于生成的包,QTA内置了执行测试的工具,可以通过调用qta-manage命令来执行测试::

Expand Down
2 changes: 1 addition & 1 deletion docs/testbase/environ.rst
@@ -1,5 +1,5 @@
环境变量配置
======
==============

下面环境变量可以用来告诉QTAF,配置文件存放的位置,环境变量指定的优先级是最高的

Expand Down
83 changes: 11 additions & 72 deletions docs/testbase/extension.rst
@@ -1,5 +1,5 @@
开发新的扩展
==========
==============

QTAF的扩展允许用户扩展QTAF命令行工具的功能。通过实现扩展,用户能定制化测试执行和资源管理的方式,也能定制自定义的测试报告的格式,方便第三方的系统或平台开发对QTA测试用例的执行的支持。

Expand All @@ -10,19 +10,20 @@ QTAF的扩展允许用户扩展QTAF命令行工具的功能。通过实现扩展
目前支持扩展的功能有:

* qta-manage
* runtest命令
* runplan命令

* runtest命令
* runplan命令
* 每个项目的manage.py
* runtest命令
* runplan命令
* runtest命令
* runplan命令


以上的命令都支持用户自定义测试执行器(TestRunner)、测试报告(TestReport)和测试资源管理后端(TestResourceManagerBackend)


====
========
实现扩展
====
========

QTAF的扩展使用Python setuptools提供的 `Entry point机制`_。QTAF定义了三个Entry points:

Expand All @@ -32,72 +33,10 @@ QTAF的扩展使用Python setuptools提供的 `Entry point机制`_。QTAF定义
* qtaf.report:测试报告类型扩展点,对应接口 “:class:`testbase.report.ITestReport`”,更多请参考“:ref:`CustomTestReport`”
* qtaf.resmgr_backend:资源管理后端扩展点,对应接口 “:class:`testbase.resource.IResourceManagerBackend`”,更多请参考“:ref:`CustomResmgrBackend`”

下面以测试执行器为例子,定义一个名字为foo的测试执行器::

# foo.py
import argparse
from testbase.runner import BaseTestRunner
class FooTestRunner(BaseTestRunner):

def run_all_tests(self, tests ):
tests.sort(lambda x,y: cmp(x.owner, y.owner)) #按用户排序执行
for test in tests:
self.run_test(test)

@classmethod
def get_parser(cls):
'''获取命令行参数解析器(如果实现)

:returns: 解析器对象
:rtype: argparse.ArgumentParser
'''
return argparse.ArgumentParser()

@classmethod
def parse_args(cls, args_string, report, resmgr_backend):
'''通过命令行参数构造对象
:returns: 测试报告
:rtype: cls
'''
return cls(report, resmgr_backend)



以上就实现了一个定制化的测试执行器,测试用例会按照用户名字排序执行。代码实现后,还需要打包和声明Entry point::

# setup.py

from setuptools import setup, find_packages

setup(
version="1.0.0",
name="qtaf-ext-foo",
py_modules=["foo"],
include_package_data=True,
package_data={'':['*.txt', '*.TXT'], },
entry_points={
'qtaf.runner': ['foo = foo:FooTestRuner'],
},
)

然后是打包和安装,如果是在开发调试,可以这样执行::

$ python setup.py develop

如果是正式打包和安装::

$ python setup.py install


如果安装成功,在执行qta-manage run是可以指定此类型的runner::

$ qta-manage run foo-1.0.0.tar.gz run footest --runner-type foo


=======
=======================
关于扩展包命名的规范
=======
=======================

请按照包格式::

Expand Down
13 changes: 6 additions & 7 deletions docs/testbase/index.rst
Expand Up @@ -4,13 +4,13 @@
contain the root `toctree` directive.
QTA Testbase文档
==============
==================

Testbase是所有QTA测试项目的基础,主要提供测试用例管理和执行、测试结果和报告、测试项目管理配置等功能。

====
========
使用文档
====
========

.. toctree::
:maxdepth: 1
Expand All @@ -26,14 +26,13 @@ Testbase是所有QTA测试项目的基础,主要提供测试用例管理和执
testrun
testplan
settings
settingsmixin
resource
dist
extension

====
========
接口文档
====
========

.. toctree::
:maxdepth: 1
Expand All @@ -43,7 +42,7 @@ Testbase是所有QTA测试项目的基础,主要提供测试用例管理和执
environ

索引和搜索
=====
=============

* :ref:`genindex`
* :ref:`modindex`
Expand Down
14 changes: 7 additions & 7 deletions docs/testbase/project.rst
@@ -1,11 +1,11 @@
创建和修改测试项目
=========
=====================

对于QTA,一个测试自动化项目指的是针具体产品的特定测试的自动化用例和支持库的集合。在测试项目的支持库中,Testbase是必不可少的基础库,因为Testbase提供了测试项目的基本的管理的支持。

======
==============
创建测试项目
======
==============

在安装好QTAF后,可以在终端中执行一下命令::

Expand All @@ -26,9 +26,9 @@
/manage.py


==============
======================
导入测试项目到Eclipse
==============
======================

如果在Windows/Mac上,可以使用QTA IDE(eclispe)导入以上项目:

Expand All @@ -37,9 +37,9 @@
* 通过Select root directory选择创建的QTA项目的根路径
* 看到Projects窗口显示footestproj,选择并点击Finish完成导入

======
==============
测试项目结构
======
==============

对于测试项目,一般包括一下的模块:

Expand Down
5 changes: 3 additions & 2 deletions docs/testbase/resource.rst
Expand Up @@ -117,6 +117,7 @@ bingfile.mp4.lnk是一个文本文件,其内容为文件正在的路径,比
目前提供两个操作文件资源的方法:
* get_file:获取指定文件对象,传入参数为上文描述规则的相对路径,返回的是文件对象的绝对路径。
* list_dir:列举指定目录下文件对象(包括文件夹),传入参数为上文描述规则的相对路径,返回的是一个包含该路径下所有文件对象的绝对路径的list。

用户如果需要在测试用例中使用特定的文件资源的时候,可以通过访问TestCase基类提供的方法::

from testbase.testcase import TestCase
Expand Down Expand Up @@ -164,9 +165,9 @@ bingfile.mp4.lnk是一个文本文件,其内容为文件正在的路径,比

.. _RegisterResType:

================
====================
注册非文件资源类型
================
====================

注册资源类型需要通过“:class:`testbase.resource.LocalResourceManagerBackend`”接口注册一个以“:class:`testbase.resource.LocalResourceHandler`”为基类的Handler。

Expand Down

0 comments on commit b66c2a8

Please sign in to comment.