Python3认证测试

godkjenn的Python项目详细描述


godkjenn
/go:kjen/ Approve (Norwegian)

Python3的认可测试。在

快速启动

安装软件包:

pip install .

以及pytest插件依赖关系:

^{pr2}$

(这可能不是绝对必要的,因为唯一的插件依赖项是pytest)。在

然后,您可以在pytest测试中使用godkjennfixture:

deftest_my_test(godkjenn):new_output=my_function()godkjenn.verify(new_output)# new_output must be a bytes object

godkjenn将查找该测试函数的现有接受的值。如果找到可接受的数据并且它匹配 新的数据,然后测试通过。否则测试失败。在

如果测试失败,这可能意味着a)您的代码实际上已损坏,或者b)您希望在中接受新的输出 先前接受值的位置(如有)。戈德詹将指导你如何处理这种情况。在

原则

批准测试的原则很简单。给定一个你认为正确的函数或程序,你就可以存储它的输出 对于给定的输入。这是其输出的acceptedgolden版本。然后,当你改变你的代码,你 重新生成输出(我们称之为received输出)并将其与接受的版本进行比较。如果匹配,则 测试通过。否则,它就会失败。在

测试失败可能意味着两件事之一。首先,这可能意味着你实际上破坏了你的程序,需要修复它 以便接收到的输出与接受的输出相匹配。其次,这可能意味着接收到的输出现在是正确的,即接受的 输出现在已过期,您需要用接收到的更新已接受的输出。在

作为一个批准测试工具,godkjenn旨在简化和简化这种测试。在

核心要素

godkjenn有几个核心元素。这些是认证测试系统中独立的部分 任何特定的测试框架。一般来说,您不需要直接使用它们;集成 用你的测试框架隐藏大部分底层细节。在

保险库

Vault是存储已接受输出的位置。(术语vault有点像是在玩弄文字:接受的输出是 “黄金”,你把金子藏在金库里。)

vault抽象定义了一个用于存储和检索已接受(和已接收)输出的API。在

godkjenn提供了一个简单的保险库FSVault,它将数据存储在文件系统中。可提供其他拱顶 通过插件系统。在

验证

核心验证算法将新接收到的数据与给定测试的接受数据进行比较。如果有 不匹配或不可接受的输出存在,这将触发测试失败并指示用户下一步要做什么。在

差分

{当用户尝试提供来自tt2的测试时,{2尝试提供一个不同于 被接受的。用户可以提供一个产生这种差异的算法

配置

在内部,godkjenn使用一个简单的dict来保存其配置信息。顶级值 作为键存储在dict中。每个插件类型都有一个指向dict映射的顶级条目 插件名称到插件特定配置。例如,配置可能如下所示:

{
    'vault': {
        'fs-vault': {
            ... configuration for fs-vault plugin
        }
    }
}

由于测试框架提供了不同的配置方法,godkjenn将其留给每个测试框架 集成以确定如何加载配置。理想情况下,godkjenn将有足够理智的默认值来工作 没有明确的配置;这是一个愿望,可能不是在所有情况下都可行。在

有关配置godkjenn的hwo示例,请参阅“examples”目录。在

配置pytest

pytest集成在pytest INI配置中查找“godkjenn_config”条目。Pytest configuration is fairly complex,所以我们将让它的文档告诉您如何 指定INI文件。最后,“godkjenn_config”条目应该包含TOML文件的文件名 包含godkjenn配置。这个路径是相对于pytest根目录来解释的;如果不是的话 指定,godkjenn寻找“戈德克詹.托姆“(同样在pytest根目录中)。缺少配置文件是正常的,并且 不被视为错误。在

例如,您的pytest.ini可能如下所示:

[pytest]
godkjenn_config = godkjenn.toml

那么您的godkjenn.toml文件可能如下所示:

[godkjenn]
vault_type = 'fs-vault'

这将指定您希望使用“fs vault”插件来存储结果。如果有配置选项 对于“fs vault”插件,TOML文件可能还包括以下内容:

[godkjenn.vault.fs-vault]
option_a = 42
option_b = "so long and thanks for all the fish"

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

推荐PyPI第三方库


热门话题
io空白作为读取文件java的第一个字符   java AJAX登录过程中,如何发出id或密码是否无效的警报?   php中的java解码JSON对象   java将json文件写入磁盘的快速方法   java如何使用PDFBox将带有注释的PDF展平   java如何在JavaFX中将对象传递到第二个窗口?   java Jzy3d保存一个不在Mac上工作的文件,错误为“NSWindow拖动区域应仅在主线程上无效!”   java如何在JavaFX TableView中编辑多个单元格?   java在我的spring boot应用程序中存储日志的最佳应用程序是什么?   java卡在泛型中   java如何使用Apache POI从excel工作表中搜索和打印特定单元格?   java如何使用Jackson读取JSON文件中的多个对象?   java从webservice 安卓 studio获取数据   在安卓 studio中不使用毕加索显示的java图像   具有嵌套映射的类的java JAXB编组   java MySQL:突出显示表1中无法在表2中找到的行   java何时使用“新”关键字安卓 API   从Python程序访问JavaRMIAPI