小编gix*_*xer的帖子

如何在unittest测试用例中退出脚本

下面是一个示例脚本,它在第一个测试用例中检查前置条件,如果不满足前置条件,我的目的是中止脚本.

#!/usr/bin/python
import unittest
import sys

class TestMyScript(unittest.TestCase):
    def test_000_prerequisite(self):
        a = 0
        if not a:
            sys.exit()
        return

    def test_001_test1(self):
        print "Inside test 1"
        return

    def test_002_test2(self):
        print "Inside test 2"
        return

if __name__ == "__main__":
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

但是,sys.exit()仅退出套件的单个测试用例.它不会退出整个脚本.

我理解unittest对每个测试用例进行单独处理,这就是为什么测试用例处理由任何测试用例引起的任何异常并进入下一个测试用例的原因.

但是我想要脚本自杀,我该怎么做?

这是我的脚本的输出:

./temp.py
EInside test 1
.Inside test 2
.
======================================================================
ERROR: test_000_prerequisite (__main__.TestMyScript)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./temp.py", line 9, in test_000_prerequisite
    sys.exit()
SystemExit

----------------------------------------------------------------------
Ran 3 tests in 0.000s

FAILED (errors=1)
Run Code Online (Sandbox Code Playgroud)

我的猜测是,如果测试用例返回一些信号,我必须乱用TestRunner并终止脚本.但不确定如何真正实现它.

解:

如果测试用例发现错误,我在Stop …

python unit-testing python-unittest

13
推荐指数
1
解决办法
2685
查看次数

Python - 将带有转义字符的字符串转换为json

JSON对象将打印到我的syslog文件中.我需要从日志中提取字符串并将其转换为JSON.我在' {'和' }' 之间提取字符串没有任何问题,但某些字符串中有一个转义字符,这导致json.loads失败

这是问题所在:

>>> import json
>>> resp = '{"from_hostname": {"value": "mysite.edu\"", "value2": 0, "value3": 1}}'
>>> json.loads(resp)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 381, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting , delimiter: line 1 column 41 (char 40)
>>> resp[40]
'"'
>>> …
Run Code Online (Sandbox Code Playgroud)

python regex string json

6
推荐指数
1
解决办法
6596
查看次数

Python Selenium - 如何指定在客户端SSL身份验证中使用的客户端证书

我根据Python Selenium中的答案查看了所有json文件中的所有可能键- FireFox webdriver配置文件首选项中有哪些可能的键,但是我找不到用于指定要在我的SSL连接中使用的客户端证书的密钥.

我已经对此进行了研究,但我找不到确切的答案.我发现我们需要根据如何使用Selenium [在Python中]为Firefox导入SSL证书中的答案将证书添加到FireFox配置文件中?,但我有点困在这里,我无法弄清楚这个证书究竟是如何添加的.

请注意,我不是在谈论信任服务器的证书.默认情况下,启动SSL连接时,将分配给工作站的本地证书用作客户端证书.在这里,我需要为我的SSL连接使用新的证书/私钥对.我需要这样做来测试SSL中的客户端身份验证.

所以,总之,我正在寻找一些看起来像这样的配置:

profile.add_client_cert(path_to_cert)
profile.add_private_key(path_to_private_key)
Run Code Online (Sandbox Code Playgroud)

我发现了一些可能是我需要调整的文件,但不知道如何将证书和密钥添加到这些文件中,cert8.db以及key3.db.我在FireFox配置文件目录中找到了这些文件.

我搜索了selenium的源代码但找不到答案:https: //github.com/SeleniumHQ/selenium/search?utf8 =%E2%9C%93&q =cert

python authentication ssl selenium

6
推荐指数
1
解决办法
1576
查看次数

为什么这个语句在while循环中打印两次?

我写了这个简单的练习程序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define CLASSES 3
#define STUDENTS 4
int grades[CLASSES][STUDENTS];

int main(void)
{
    int i = 1;
    char t,k;
    while(i == 1)
    {
        printf("\n\n\nMENU:\nEnter the grades(E)\nReport Grades(R)\nQuit(Q)\nYour choice: ");
        k = toupper(getchar());
        printf("Input entered... %c\n", k);
        switch(k) {
            case 'E' : 
                printf("Entering the grades..\n");
                break;
            case 'R' :
                printf("Reporting the grades...\n");
                break;
            case 'Q' :
                printf("Quitting the program...\n");
                exit(0);
                break;
            default:
                printf("ERROR: %c: Incorrect menu option\n", k);
                break;
        }

    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它首先要求我输入一个选项.如果我输入'E'或'R',它会进入相应的'case'块,但是在while循环中的下一次迭代中,它不会等我输入我的选择.相反,它假设我输入"NULL"并第三次询问我的提示.每次进入选择时都会发生这种情况.这是该程序的输出.我在这里错过了什么?

host-mb:c_practice …
Run Code Online (Sandbox Code Playgroud)

c io loops while-loop getchar

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

搜索多个文件时,请勿在zgrep输出中打印文件名

当我使用zgrep搜索多个.gz文件时,输出中包含文件名.有时我不需要它bcz我使用其他一些脚本来解析输出.

我尝试使用"-h"选项但它似乎不适用于zgrep.

这是我使用命令的方式:

admin@mybox [11:16:56]> zgrep -Eh "\.ERR|\.WARNING|\.FATAL" messages.?.gz
messages.1.gz:Oct 14 10:02:06 .............................................
messages.2.gz:Oct 14 09:27:58 .............................................
Run Code Online (Sandbox Code Playgroud)

知道如何阻止文件名被打印出来吗?

linux grep

4
推荐指数
1
解决办法
5334
查看次数