选择单元测试子集的nose插件

nose-picker的Python项目详细描述


nose picker是一个选择单元测试子集的插件(在django中 也一样!)

这个插件修改了nose的单元测试发现,只选择 要运行的单元测试。通过传入--total-processes参数,您可以选择 要运行的分母(上面的n)。那--which-process 参数控制要运行该子集的哪个部分,因此如果有5个子集,则 可以选择0、1、2、3或4。

它是如何工作的?很简单!它散列nose的文件名 运行时,将模除以n,然后查看此文件是否为“its”。 非常简单,但它允许您运行这些nose picker中的多个 并行运行,每个运行单元测试的单独子集!

动机

nose多进程插件在运行时接管测试运行程序,因此 不适用于需要自定义测试运行程序的环境。 nose picker让您保留测试运行程序!

安装

通过pip

pip install --user nose-picker

多进程脚本示例

例如:

def main():
    num_processes = int(multiprocessing.cpu_count() * 2.5)
    tests = []
    for i in range(num_processes):
        test_command = TEST_CMD_TEMPLATE % (
            i,
            num_processes,
        )
        tests.append(TestWatcher(test_command))

    returncode = 0
    for test_watcher in tests:
        test_watcher.join()
        if test_watcher.returncode > 0:
            returncode += test_watcher.returncode
        for line in test_watcher.stderr.splitlines():
            if not (
                line.endswith(' ... ok') or
                '... SKIP' in line
            ):
                sys.stderr.write(line + '\n')

    return returncode


class TestWatcher(threading.Thread):
    def __init__(self, command):
        super(TestWatcher, self).__init__()
        self.command = command
        self.stdout = ''
        self.stderr = ''
        self.start()
        self.returncode = 0

    def run(self):
        p = subprocess.Popen(
            self.command,
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
        )
        self.stdout, self.stderr = p.communicate()
        self.returncode = p.returncode

许可证

nose picker版权所有2014 EventBrite和贡献者,由 在BSD样式许可下提供;有关详细信息,请参阅许可。

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

推荐PyPI第三方库


热门话题
java如何创建Restful服务并将其部署到OSGi容器?   java如何获取用户在EditText中输入的时间并从中扣除5小时30分钟?   java用户无法注销firebase 安卓   java Undertow始终将字符集添加到ContentType头,即使它不是文本MIME类型   java LocalBroadcastManager未正确接收消息   foreach在Java中有没有比For循环更好的方法可以灵活地遍历集合?   java如何在安卓上移动球   在OSGi下的Log4j中使所有记录器异步时,java ClassNotFoundException   java未知输入字节长度转换为int   java测试工厂在使用前缀命名时抛出NPE   对象的副本(JAVA)   java SP20310:无法打开文件。sql   java Spring安全性仅为一条路径添加安全性   java在idea中获取菱形运算符的编译错误