pytest的mysql进程和客户端fixture

pytest-mysql的Python项目详细描述


pytest mysql

Latest PyPI versionWheel StatusSupported Python VersionsLicense

包裹状态

TestsCoverage StatusRequirements Status

这是什么?

这是一个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 optionFixture factory argumentCommand line optionpytest.ini optionDefault
Path to executablemysqld_exec–mysql-mysqldmysql_mysqldmysqld
Path to safe executablemysqld_safe–mysql-mysqld-safemysql_mysqld_safe/usr/bin/mysqld_safe
Path to mysql_install_db for legacy installationsinstall_db–mysql-install-dbmysql_install_db/usr/bin/mysql_install_db
Path to Admin executableadmin_executable–mysql-adminmysql_admin/usr/bin/mysqladmin
hosthost–mysql-hostmysql_hostlocalhost
portport–mysql-portmysql_portrandom
MySQL user to work withuser–mysql-usermysql_userroot
User’s passwordpasswd–mysql-passwdmysql_passwd
Test database namedbname–mysql-dbnamemysqldbnametest
Starting parametersparams–mysql-paramsmysql_params
Log directory locationlogsdir–mysql-logsdirmysql_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配置选项

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

推荐PyPI第三方库


热门话题
java需要设置框架。可设置大小(false)以重新绘制()   java我对PDF文件感到困惑   为什么是太阳。jvm。热点。调试器。DebuggerException:无法打开二进制文件`?   设置结果为textview时出现java空指针异常   我应该使用什么同步原语在Java中实现事件驱动程序框架?   java为什么WindowClosing处理程序在退出程序之前不执行后台任务?   如何将“20170712T18:43:04.000Z”转换为安卓或java中的相对时间?   Java,获取按键的时间长度,currentTimeMillies()始终为24   maven构建的java可执行Jar找不到logback。xml   java在其外部的函数中使用for循环中的值   java如何以表格格式将不同长度的数据对齐   java Play 2.5 WebSocket连接构建   maven而非eclipse的java强制转换问题   java如何在JFreeChart中使X轴上的值水平?   构建Java Windows应用程序以访问在线MySQL数据库需要什么   java添加构造函数会出错吗?这没有道理,请帮忙,编程问题   java在一个jframe中的两个JPanel中使用两个绘制方法   java数学或逻辑问题   java如何复制Androids库存摄像头方向更改