pytest的mysql进程和客户端fixture
pytest-mysql的Python项目详细描述
这是什么?
这是一个pytest插件,它使您能够测试依赖于正在运行的mysql数据库的代码。 它允许您为mysql进程和客户机指定fixture。
警告
仅支持MySQL 5.7.6及更高版本。对于旧版本,请使用pytest mysql 2.0.1 尽管欢迎使用pull请求来添加对旧mysql版本的支持。
如何使用
插件包含两个装置
- mysql-它是一个具有功能范围的客户端fixture。每次测试后,从mysql中删除测试数据库以确保可重复性。
- mysql_proc-会话范围的fixture,它在首次使用mysql实例时启动,在测试结束时停止。
只需将其中一个fixture包含到测试fixture列表中。
如果需要,您还可以创建其他mysql客户端和进程fixture:
frompytest_mysqlimportfactoriesmysql_my_proc=factories.mysql_proc(port=None,logsdir='/tmp')mysql_my=factories.mysql('mysql_my_proc')
注意
每个mysql进程fixture都可以通过fixture工厂参数以不同的方式配置。
配置
可以通过三种方式定义设置,即fixture factory参数、命令行选项和pytest.ini配置选项。 您可以选择您喜欢的设置,但请记住,这些设置的处理顺序如下:
- ^{tt1}$
- ^{tt2}$
- ^{tt3}$
MySQL option | Fixture factory argument | Command line option | pytest.ini option | Default |
---|---|---|---|---|
Path to executable | mysqld_exec | –mysql-mysqld | mysql_mysqld | mysqld |
Path to safe executable | mysqld_safe | –mysql-mysqld-safe | mysql_mysqld_safe | /usr/bin/mysqld_safe |
Path to mysql_install_db for legacy installations | install_db | –mysql-install-db | mysql_install_db | /usr/bin/mysql_install_db |
Path to Admin executable | admin_executable | –mysql-admin | mysql_admin | /usr/bin/mysqladmin |
host | host | –mysql-host | mysql_host | localhost |
port | port | –mysql-port | mysql_port | random |
MySQL user to work with | user | –mysql-user | mysql_user | root |
User’s password | passwd | –mysql-passwd | mysql_passwd | |
Test database name | dbname | –mysql-dbname | mysqldbname | test |
Starting parameters | params | –mysql-params | mysql_params | |
Log directory location | logsdir | –mysql-logsdir | mysql_logsdir | $TMPDIR |
示例用法:
在您自己的装置中将其作为参数传递
mysql_proc=factories.mysql_proc(port=8888)
运行测试时使用--mysql-port命令行选项
py.test tests --mysql-port=8888
在pytest.ini文件中将端口指定为mysql_port。
To do so, put a line like the following under the ^{tt7}$ section of your ^{tt6}$:
[pytest]mysql_port=8888
以docker/根用户身份运行
不幸的是,以根用户身份运行mysql(因此在docker上是默认的)是不可能的。 mysql(以及mariadb)不允许这样做。
USER nobody
这一行应该将Docker进程切换为在用户Nobody上运行。见this comment for example
更改日志
2.0.1
- [fix]改进了OSX上的MySQL版本检测
- [构建]在travis上将提取的xdist放入单独的阶段
- [构建]将EMT作为单独的阶段部署在Travis上
2.0.0
- [增强]添加对mysql 5.7.6和更高版本的支持,并提供新的配置选项。遗留配置支持旧的mysql和mariadb数据库。
- [中断]mysql_exec ini选项替换为mysql_mysqld_safe
- [中断]–mysql exec cmd选项替换为–mysql mysqld safe
- [中断]用mysql-install-db替换mysql-init-ini选项
- [中断]替换为–mysql init cmd选项,替换为–mysql install db
- [中断]添加了mysql_mysqld选项和–mysql mysqld cmd选项
1.1.1
- [增强]删除了path.py依赖项
1.1.0
- [增强]将不推荐的getfuncargvalaue更改为getfixturevalues,至少需要pytest 3.0.0
1.0.0
- [增强]为mysql的日志目录位置创建命令行和pytest.ini配置选项
- [增强]为mysql的启动参数创建命令行和pytest.ini配置选项
- [增强]为mysql测试数据库名创建命令行和pytest.ini配置选项
- [增强]为mysql的用户密码创建命令行和pytest.ini配置选项
- [增强]为mysql用户创建命令行和pytest.ini配置选项
- [增强]为mysql主机创建命令行和pytest.ini配置选项
- [增强]为mysql端口创建命令行和pytest.ini配置选项
- [增强]为mysql的init可执行文件创建命令行和pytest.ini配置选项
- [增强]为MySQL的管理可执行文件创建命令行和pytest.ini配置选项
- [增强]为mysql可执行文件创建命令行和pytest.ini配置选项
- [增强]为mysql logsdir创建命令行和pytest.ini配置选项