pytest测试框架的服务插件
pytest-services的Python项目详细描述
Pytest测试框架的服务插件
安装pytest服务
pip install pytest-services
功能
该插件提供了一组fixture和实用程序函数,可以使用 pytest
固定装置
- 运行服务
- 确定是否应运行服务。如果不是在分布式环境中,则默认为false (没有 pytest xdist )。可以通过在测试配置中重写此fixture手动设置为true,或者 只需使用 –运行服务 命令行参数(见下文)。
基础设施
< DL>
-
从机id
-
如果使用pytest xdist运行测试,则从机的id。如果不使用
pytest xdist
(命令行选项设置为
load
)。
< DL>
-
会话ID
-
测试会话ID。全局唯一,当然,对于可能的多个测试也保证是不同的
在同一个测试节点上运行的会话,通过
pytest xdist
< DL>
观察者
-
用于实例化测试服务观察程序(popen对象)的函数。包括
服务处理,并在从函数返回观察程序之前测试服务。
memcached服务的使用示例:
@pytest.fixture(scope='session')defmemcached(request,run_services,memcached_socket,watcher_getter):"""The memcached instance which is ready to be used by the tests."""ifrun_services:returnwatcher_getter(name='memcached',arguments=['-s',memcached_socket],checker=lambda:os.path.exists(memcached_socket),# Needed for the correct execution order of finalizersrequest=request,)
< DL>
-
服务日志
-
管理测试服务时用于调试日志记录的记录器。
< DL>
-
根目录
-
测试服务工件的父目录(基于磁盘)。默认设置为
/tmp
。
< DL>
< d>基本目录
-
测试服务工件的基本目录(基于磁盘),根目录的唯一子目录。
在测试会话结束时自动递归删除。
< DL>
-
温度目录
-
临时目录(基于磁盘),是
基本目录的子文件夹。
用于严格的临时工件(例如-从用户输入上载文件的文件夹)。
< DL>
-
内存根目录
-
测试服务工件的父目录(基于内存)。拥有内存基目录的主要思想是
将性能关键型文件存储在那里。例如-mysql服务将使用它来存储数据库文件,它将加快
mysql服务器很多,特别是数据库管理操作。
默认设置为
/var/shm
,并返回到"根目录"。注意,如果Apparmor在你的系统上运行,大多数
它可能会阻止您的测试服务使用它(例如-mysql有它的apparmor配置文件)。你需要
在apparmor配置中禁用此配置文件。
禁用mysqld的apparmor的示例:
sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
sudo /etc/init.d/apparmor restart
< DL>
-
内存库目录
-
测试服务工件的基本目录(基于内存),内存根目录的唯一子目录。
在测试会话结束时自动递归删除。
< DL>
-
内存温度目录
-
临时目录(基于内存),基本目录的子文件夹
< DL>
-
锁定目录
-
用于存储为资源分配(端口、显示等)创建的锁的lock files目录。子文件夹
内存根目录
< DL>
-
运行目录
-
进程id和socket文件目录(类似于系统范围的
/var/run
但对于测试会话是本地的)。子文件夹
内存根目录
< DL>
-
端口采集器
-
函数获取未分配的端口。
通过flock自动确保在应用程序级别锁定和解除锁定。
< DL>
-
显示器
-
函数获取未分配的显示。
通过flock自动确保在应用程序级别锁定和解除锁定。
维修夹具
< DL>
-
内存缓存
-
启动memcached实例。
需要安装pylibmc或memcache,并将其指示为额外的(
pip install'pytest services[memcached]
)。
< DL>
-
内存缓存插槽
-
用于连接的memcached unix套接字文件名。
< DL>
-
memcached_连接
-
memcached连接字符串。
< DL>
-
清除内存缓存
-
确定是否应在每次测试运行之前清除memcached。默认情况下等于
运行服务
fixture。
需要安装pylibmc或memcache,并将其指示为额外的(
pip install'pytest services[memcached]
)。
< DL>
-
memcached_客户端
-
绑定到服务的pylibmc.client实例。
需要安装pylibmc或memcache,并将其指示为额外的(
pip install'pytest services[memcached]
)。
< DL>
-
mysql
-
启动MySQL服务器实例。
< DL>
-
mysql数据库名称
-
初始化mysql服务后要创建的mysql数据库名称
系统
数据库。
< DL>
-
mysql数据库getter
-
具有单个参数的函数-数据库名称。为测试创建其他数据库。
用于mysql数据库中的fixture,由mysql使用。
< DL>
-
MySQL连接
-
MySQL连接字符串。
< DL>
-
xvfb
<开始>a href="http://en.wikipedia.org/wiki/xvfb" rel="nofollow">xvfb实例。
< DL>
-
xvfb_显示
-
用于连接的xvfb显示器。
< DL>
-
xvfb_分辨率
要使用的xvfb显示分辨率。元组形式为
(1366768,8)
实用功能
django设置在某些情况下,需要在测试运行期间切换django设置,因为要测试几个django项目 单一测试套件。 pytest_services.django_settings 简化了django设置到单个函数调用的切换:
- 设置django设置
- 重写环境变量并调用settings对象的setup方法重新加载它们。
用法示例:
conftest.py:
frompytest_servicesimportdjango_settingsdjango_settings.clean_django_settings()django_settings.setup_django_settings('your.project.settings')
请注意,nice项目 pytest django 对这种情况没有帮助,因为它是面向单个django项目的,因为 以及标准的django测试技术。只要没有固定设备可以共享,单项目方法就可以很好地工作 它们之间,但是当有fixture要共享时,您可以从加入几个django项目测试中获益 在一次测试运行中,因为所有会话范围的fixture对于所有项目测试只实例化一次。 只有当您有足够大的测试套件并且设备足够重时,才能看到这种好处。
命令行选项
- –运行服务
- 强制运行服务,即使测试是以非分布式方式执行的(不带 pytest xdist )。
- –xvfb显示
- 跳过xvfb服务运行并使用提供的显示。当您需要运行除xvfb之外的所有服务时非常有用 要调试浏览器测试,例如,如果您使用了带或不带 pytest splinter 和 pytest bdd
示例
测试你的测试。py:
importMySQLdbdeftest_some_mysql_stuff(mysql):"""Test using mysql server."""conn=MySQLdb.connect(user='root')
联系人
如果您有问题、错误报告、建议等,请在 github项目页面