py.test的可扩展服务器修复

pytest-server-fixtures的Python项目详细描述


pytest服务器设备

这个库为运行real提供了一个可扩展的框架 测试中的网络服务器,以及一些 知名的网络服务和数据库。

包括电池

<表> < COLGROUP > < COL/> < COL/> <广告> 夹具 额外依赖项名称 < /广告> <正文> MongoDB MongoDB postgres 博士后 redis公司 redis 重新思考 重新思考数据库 s3迷你 S3 阿帕奇httpd > 简单的http服务器 > 詹金斯 詹金斯 xvfb(x-windows虚拟帧缓冲区) > < > <表>

注意:v2 fixtures支持本地启动fixtures,在 docker 集装箱或AS Kubernetes 吊舱(见 配置

安装

此软件包的安装取决于您希望它的哪些部分 使用。它使用可选依赖项(在上表中指定)来 减少所需的第三方软件包数量。如果你不这样做 使用mongodb,您不需要安装pymongo。

# Install with support for just mongodb
pip install pytest-server-fixtures[mongodb]# Install with support for mongodb and jenkins
pip install pytest-server-fixtures[mongodb,jenkins]# Install with Docker support
pip install pytest-server-fixtures[docker]# Install with Kubernetes support
pip install pytest-server-fixtures[kubernetes]# Install with only core library and support for httpd and xvfp
pip install pytest-server-fixtures

在测试或conftest.py中显式地启用fixture(不是必需的 使用setuptools入口点时:

pytest_plugins=['pytest_server_fixtures.httpd','pytest_server_fixtures.jenkins','pytest_server_fixtures.mongo','pytest_server_fixtures.postgres','pytest_server_fixtures.redis','pytest_server_fixtures.rethink','pytest_server_fixtures.xvfb',]

配置

使用以下环境变量配置设备:

<表> < COLGROUP > < COL/> < COL/> < COL/> <广告> 设置 说明 默认值 < /广告> <正文> 服务器设备主机名 服务器将侦听的主机名 当前默认主机名 服务器设备禁用http代理 发出http请求时,请禁用在shell环境中设置的任何http代理 正确 服务器设备/服务器类 用于运行fixture的服务器类,从 thread docker kubernetes 中选择 线程 服务器设备名称空间 (仅限kubernetes)指定用于启动设备的kubernetes命名空间。 (与测试主机相同) 服务器设备本地测试 (仅限kubernetes)设置为 以允许运行集成测试(请参见 集成测试 )。 错误 服务器设备 包含可执行文件的目录 "(依赖于 $path 服务器设备图像 (仅Docker)y)Mongo的Docker图像 mongo:3.6 服务器设备配置 postgres pg_config可执行文件 pg_配置 服务器设备 redis服务器可执行文件 redis服务器 服务器设备redis映像 (仅限Docker)用于Redis的Docker图像 redis:5.0.2-阿尔卑斯山 重新思考服务器设备 重新思考数据库服务器可执行文件 重新思考db 服务器设备重新思考图像 (仅限Docker)重新思考的Docker图像数据库 重新思考:2.3.6 服务器设备 httpd服务器可执行文件 亚太地区2 服务器设备httpd模块 httpd模块目录 /usr/lib/apache2/模块 服务器设备 用于运行詹金斯服务器的Java可执行文件 TT> Java 服务器设备 .war 用于运行jenkins的文件 /usr/share/jenkins/jenkins.war 服务器设备xvfb xvfb服务器可执行文件 xvfb < > <表>

常用夹具属性

所有这些设备都遵循在 唯一端口,然后关闭服务器并清理fixture 拆卸。

所有测试设备在运行时共享以下属性:

<表> < COLGROUP > < COL/> < COL/> <广告> 属性 说明 < /广告> <正文> 主机名 服务器正在侦听的主机名 端口 服务器正在监听的端口号 死亡 真/假:我死了吗? 工作区 path.py 服务器即将用完的临时目录的对象 < > <表>

MongoDB

mongo 模块包含以下设备:

<表> < COLGROUP > < COL/> < COL/> <广告> 夹具名称 说明 < /广告> <正文> Mongo_服务器 功能范围的MongoDB服务器 Mongo_服务器会话 会话范围的MongoDB服务器 Mongo_服务器CLS 类范围的MongoDB服务器 < > <表>

所有这些装置都具有以下特性:

<表> < COLGROUP > < COL/> < COL/> <广告> 属性 说明 < /广告> <正文> api pymongo.mongoclient 连接到正在运行的服务器 < > <表>

下面是一个如何运行这些服务器的示例:

deftest_mongo(mongo_server):db=mongo_server.api.mydbcollection=db.test_colltest_coll.insert({'foo':'bar'})asserttest_coll.find_one()['foo']=='bar'

博士后

Postgres 模块包含以下设备:

<表> < COLGROUP > < COL/> < COL/> <广告> 夹具名称 说明 < /广告> <正文> postgres服务器sess 会话范围的postgres服务器 < > <表>

Postgres服务器设备具有以下属性:

<表> < COLGROUP > < COL/> < COL/> <广告> 属性 说明 < /广告> <正文> 连接() 返回连接到服务器的原始连接对象 连接配置 返回一个dict,其中包含另一个数据库库连接所需的所有数据。 < > <表>

您可能希望在会话作用域的基础上构建另一个fixture 固定装置;例如:

defcreate_full_schema(connection):"""Create the database schema"""pass@pytest.fixture(scope='session')defdb_config_sess(postgres_server_sess:PostgresServer)->PostgresServer:"""Returns a DbConfig pointing at a fully-created db schema"""server_cfg=postgres_server_sess.connection_configcreate_full_schema(postgres_server_sess.connect())returnpostgres_server_sess
< H3>DIS

redis模块包含以下装置:

<表> < COLGROUP > < COL/> < COL/> <广告> 夹具名称 说明 < /广告> <正文> redis服务器 功能范围的redis服务器 redis服务器会话 会话范围的redis服务器 < > <表>

所有这些装置都具有以下特性:

<表> < COLGROUP > < COL/> < COL/> <广告> 属性 说明 < /广告> <正文> api redis.redis 连接到运行服务器的客户端 < > <表>

下面是一个如何运行这些服务器的示例:

deftest_redis(redis_server):redis_server.api.set('foo':'bar')assertredis_server.api.get('foo')=='bar'

S3微型车

s3 模块包含以下固定装置:

<表> < COLGROUP > < COL/> < COL/> <广告> 夹具名称 说明 < /广告> <正文> S3U服务器 使用"minio"工具的会话范围的S3服务器。 s3单元桶 功能范围S3 bucket < > <表>

s3服务器具有以下属性:

<表> < COLGROUP > < COL/> < COL/> <广告> 属性 说明 < /广告> <正文> 获取S3客户机() 返回boto3 资源:( boto3.resource('s3', …) < > <表>

s3存储桶具有以下属性:

<表> < COLGROUP > < COL/> < COL/> <广告> 属性 说明 < /广告> <正文> 姓名 bucket名称,一个uuid 客户 来自服务器的boto3 资源 < > <表>

下面是一个如何运行这些服务器的示例:

deftest_connection(s3_bucket):bucket=s3_bucket.client.Bucket(s3_bucket.bucket_name)assertbucketisnotNone

重新思考数据库

重新思考模块包含以下装置:

<表> < COLGROUP > < COL/> < COL/> <广告> 夹具名称 说明 < /广告> <正文> 重新思考服务器 功能范围的redis服务器 重新思考服务器sess 会话范围的redis服务器 重新思考独特的数据库 会话范围唯一数据库 重新思考模块db 模块范围的唯一数据库 重新思考制造表 创建命名表的模块范围fixture 重新思考空数据库 函数范围的fixture到在"重新思考make_表"中创建的空表
< > <表>

服务器设备具有以下属性

<表> < COLGROUP > < COL/> < COL/> <广告> 属性 说明 < /广告> <正文> 连接 重新思考数据库连接 到正在运行的服务器上的 测试 数据库 < > <表>

下面是一个如何运行这些服务器的示例:

deftest_rethink(rethink_server):conn=rethink_server.connconn.table_create('my_table').run(conn)inserted=conn.table('my_table').insert({'foo':'bar'}).run(conn)assertconn.get(inserted.generated_keys[0])['foo']=='bar

创建表格

您可以为模块中的每个测试创建表格,如下所示:

FIXTURE_TABLES=['accounts','transactions']deftest_table_creation(rethink_module_db,rethink_make_tables):conn=rethink_module_dbassertconn.table_list().run(conn)==['accounts','transactions']

清空数据库

rehinkdb创建空表的速度要慢得多 他们(至少在写作的时候),所以我们有一个固定装置,将空 为我们创建的测试之间的表 重新思考制作表 上面的固定装置:

FIXTURE_TABLES=['accounts','transactions']deftest_put_things_in_db(rethink_module_db,rethink_make_tables):conn=rethink_module_dbconn.table('accounts').insert({'foo':'bar'}).run(conn)conn.table('transactions').insert({'baz':'qux'}).run(conn)deftest_empty_db(rethink_empty_db):conn=rethink_empty_dbassertnotconn.table('accounts').run(conn)assertnotconn.table('transactions').run(conn)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在收到远程通知时对iBeacon进行java扫描   尝试在Java中实现MD5哈希的算法   java getLastLocation最近有多久了?   java线程创建侦听器   swing Java JComboBox接受ArrayList,但不显示ArrayList的项   构建服务器上的java XML验证速度较慢   Tomcat无法识别java中的更改(Intellij配置)   java 5中引入泛型的原因   java意图。Android中的额外_流   for循环Java直接遍历数组而不是数组变量   java内部类中的两个声明构造函数   java试图使用子文本字段在JPanel上设置边框   java如何允许在Android WebView中进行条带签出?   在Java中,如何将数字从一个类转移到另一个类?   从任务栏关闭浏览器时的java会话   java有没有一种自动化的方法来确保代码的所有部分都经过单元测试?   2DArrays Java编码查找数组