小编dWi*_*tty的帖子

使用 pytest 动态参数化类级装置

可以从命令行参数参数化测试函数。可以将固定装置的范围限定为一个类。我想将这两件事结合起来,以便每个类都接收赋予类内固定装置的参数化参数。

(本质上,每个命令行参数我需要运行一个非常昂贵的操作,然后针对该操作的结果进行各种便宜、快速的测试,并且我不希望为每个便宜的测试重新运行昂贵的操作,所以我想要一种保存它的方法)

换句话说,我正在寻找与 pytest_generate_tests(metafunc) 等效的函数,它将用于动态参数化固定装置,而不是测试函数。

我已经尝试过但不成功的一件事是读取请求参数并通过 pytest_generate_tests 挂钩设置这些参数。

conftest.py:
    def pytest_generate_tests(metafunc):
        metafunc.parametrize("result", [
                (1,0),(1,2)
            ])

test_thing.py:
    class TestThingy:
        @pytest.fixture(scope="class")
        def result(self, request):
            a,b=request.param
            return a+b

    #@pytest.mark.parametrize("result", [(0, 1), (1, 2)])
    def test_one(self, result):
        assert result!=2
Run Code Online (Sandbox Code Playgroud)

运行此测试会导致出现以下错误(请注意,当我在没有 conftest 挂钩且注释行未注释的情况下尝试时,测试运行良好):

@pytest.fixture(scope="class")
def result(self, request):
    a,b=request.param
Run Code Online (Sandbox Code Playgroud)

AttributeError:“SubRequest”对象没有属性“param”

我也对任何其他替代方法来实现相同的结果感兴趣。

python testing fixture pytest

5
推荐指数
1
解决办法
3756
查看次数

提前解决notepad中文编码bug

记事本中存在一个已知错误,有时在记事本++、写字板等中完全正常打开的文件在记事本中会以汉字形式打开。

错误的屏幕截图

复制粘贴文件内容(从记事本++到新文档)仍然会在记事本中产生中文字符。更改文件名在记事本中仍然会产生中文字符。强制更改编码没有任何效果。

插入或删除单个字符(在记事本++中)确实可以解决问题(直到更改被逆转,然后问题又出现),但是我们不知道如何提前知道哪些文件将受益于插入无关的字符空格,与插入空格本身会触发错误的文件相比。

我们希望确保我们创建和保存的文件不会触发此错误。该方法必须与Windows和Linux机器兼容。

有其他人遇到过这种情况并找到了防止触发错误的可靠方法吗?

(注意:当在二进制编辑器中检查时,所讨论的文件仅包含 ASCII 字符,没有其他内容。这不是插入的二进制数据)

notepad notepad++

5
推荐指数
1
解决办法
5784
查看次数

git merge --squash 包含额外的消息

运行git merge --squash提交消息时,包含我正在压缩的所有提交的提交消息,太好了。然而,出于某种原因,它实际上包含的不仅仅是我正在压缩的提交。

这是我的工作流程:

  1. 各种功能分支通常合并到开发中。
  2. 当一个版本准备好时,我会git merge --squash从开发到登台。
  3. 我在暂存中使用版本号进行第二次提交,然后从暂存到开发进行正常合并。(我偶尔也会直接在登台上为紧急的一次性错误做热修复,并从登台到开发做一个正常的合并)

问题是第 2 步。每次我尝试进行壁球提交时,提交消息都包含至少半年以前的所有提交(从我从 master 分支开发开始),尽管我已经将它们合并到以前的壁球提交中. 我手动修剪了除相关之外的所有内容,但至少有两次我忘记了这样做,最终得到了一个荒谬笨拙的提交消息。

我从文档中看到的似乎暗示git merge --squash不应该这样做,并且应该聪明地猜测我正在压缩哪些提交。我一直无法找到它是如何做到这一点的解释,所以我可以弄清楚出了什么问题/如何解决它。

我该如何解决?如果它不能直接修复,是否有我可以使用的替代工作流程,它会给我一个具有完整历史记录的分支和一个具有合并提交的分支,这些提交引用回它们来自哪里?

添加更多细节:

we'll call common parent 0
feature branch one: 0-A - B - (merge to development, delete branch)
feature branch two: (development from point D) - E- F (merge to development, delete branch)


development: 0-A - B ------------------------------D- E - F-------------
                  |(source, NOT parent)           /(merge from staging) \                            
staging:     0 --- 1st squash …
Run Code Online (Sandbox Code Playgroud)

git merge

2
推荐指数
1
解决办法
119
查看次数

标签 统计

fixture ×1

git ×1

merge ×1

notepad ×1

notepad++ ×1

pytest ×1

python ×1

testing ×1