相关疑难解决方法(0)

使用用户输入的密码进行Python单元测试

我正在尝试对访问远程服务的python代码进行单元测试。我在python 2.7中使用PyUnit。

在该setUpClass方法中,代码提示用户输入服务的密码。我想使所有模块保持模块化,因此我为每个要测试的类创建了单独的单元测试类。这些类都访问相同的远程服务,并且都使用setUpClass超类的方法的单个定义。

我的问题是我必须多次重新输入密码(每个测试类一次)。我很懒。我只想为所有单元测试输入一次密码。我可以通过在单元测试中对密码进行硬编码来避免此问题,但这是一个糟糕的主意。另一种选择是将所有内容都推入一个派生自的庞大类中unittest.TestCase,但由于我喜欢模块化,因此我想避免使用这条路线。

代码的结构如下:

import unittest
from getpass import getpass

class TestCommon(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        pwd = getpass()

class test_A(TestCommon):
    # ...individual unit tests for class A

class test_B(TestCommon):
    # ...individual unit tests for class B
Run Code Online (Sandbox Code Playgroud)

在此示例中,我将不得不输入两次密码:一次输入class A,一次输入class B

是否有人建议我在单元测试运行开始时就一次性输入一次安全密码?谢谢!

python unit-testing python-2.7 python-unittest

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

如何从Python脚本返回一个值作为Bash变量?

这是我的代码的摘要:

# import whatever

def createFolder():
    #someCode
    var1=Gdrive.createFolder(name)
    return var1 

def main():
    #someCode
    var2=createFolder()
    return var2

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

我设法向bash变量返回值的一种方式是打印从main()返回的内容。另一种方法是只在脚本的任何位置打印变量

有什么办法可以以更Python化的方式返回它吗?

脚本的调用方式如下:

folder=$(python create_folder.py "string_as_arg")
Run Code Online (Sandbox Code Playgroud)

python bash program-entry-point return-value

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

如何在 Selenium Chromedriver 中设置时区?

我不知道如何在使用 Chromedriver 时设置时区。是否有一些 ChromeOptions 参数之类的?

问题是,当我访问某些站点(例如https://whoer.net)时,它显示的系统时间等于 Windows 上设置的时间。而且我希望能够以某种方式更改 Chromedriver 的时区以执行时区相关测试。

我尝试设置一些 chrome 选项:

Map<String, Object> chromeOptions = new HashMap<String, Object>();
chromeOptions.put("args", Arrays.asList("--disable-system-timezone-automatic-detection", "--local-timezone"));
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
Run Code Online (Sandbox Code Playgroud)

它不起作用。

尝试使用 Javascript 做一些奇怪的事情:

((JavascriptExecutor) driver).executeScript("Date.prototype.getTime = function() { return 1 };");
   
Run Code Online (Sandbox Code Playgroud)

它也没有帮助。

编辑:

发现这个https://sqa.stackexchange.com/questions/8838/faking-system-time-date-with-selenium-webdriver

尝试使用从TimeShift.js复制的代码在页面上执行 javascript,如下所示:

((JavascriptExecutor) driver).executeScript("/*code from TimeShift.js here*/ TimeShift.setTimezoneOffset(-60);");
Run Code Online (Sandbox Code Playgroud)

https://whoer.net 上的系统时间没有改变。我究竟做错了什么?

javascript java selenium selenium-chromedriver selenium-webdriver

5
推荐指数
3
解决办法
9267
查看次数

Spacy 相似性警告:“基于空向量评估 Doc.similarity。”

我正在尝试使用 FAQ 数据集进行数据增强。我用最相似的词来改变词,特别是名词,Wordnet检查与 Spacy 的相似性。我使用多个 for 循环来浏览我的数据集。

import spacy
import nltk
from nltk.corpus import wordnet as wn
import pandas as pd

nlp = spacy.load('en_core_web_md')
nltk.download('wordnet')
questions = pd.read_csv("FAQ.csv")

list_questions = []
for question in questions.values:
    list_questions.append(nlp(question[0]))

for question in list_questions: 
    for token in question:
        treshold = 0.5
        if token.pos_ == 'NOUN':
            wordnet_syn = wn.synsets(str(token), pos=wn.NOUN)  
            for syn in wordnet_syn:
                for lemma in syn.lemmas():
                    similar_word = nlp(lemma.name())
                    if similar_word.similarity(token) != 1. and similar_word.similarity(token) > treshold:
                        good_word = similar_word
                        treshold …
Run Code Online (Sandbox Code Playgroud)

nlp wordnet python-3.x spacy pytorch

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

Synology 网站简单的“hello world”快速入门使用 python、flask 和 uwsgi

我注意到 Synology 的本机网站使用 uwsgi 框架,最近添加了对 python 脚本的支持。我想知道是否有人可以帮我找出一个简单的 hello world 示例。我不清楚 uwsgi 文件中应放入什么内容。我按照 uwsgi 文档页面上的 python-flask 快速入门示例进行操作: uwsgi python-flask 快速入门

在 webstaion>service Portal 上:我设置了一个虚拟主机,其中 nginx 监听端口 8080: 网站虚拟主机配置文件

然后,在此配置文件中,我设置了包含 python 脚本、可调用入口函数和 uwsgi 文件的相应文件夹: 在此输入图像描述

该文件夹中的“main.py”Python 脚本是快速入门页面中的示例:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "<span style='color:red'>I am app 1</span>"
Run Code Online (Sandbox Code Playgroud)

我采用了该示例中的命令行参数并制作了 uwsgi.ini 文件并将其放置在同一文件夹中:

[uwsgi]
socket = 127.0.0.1:8080
wsgi-file = main.py 
callable = app 
processes = 4
threads = 2 
stats = 127.0.0.1:9191
Run Code Online (Sandbox Code Playgroud)

在 webstation 的 script>python 页面中:我设置了一个“python-flask 配置文件”并添加了所需的 Flask 模块: 在此输入图像描述

在此输入图像描述

我在虚拟主机的 …

python flask uwsgi synology

5
推荐指数
2
解决办法
8244
查看次数

Django allauth没有发送与https的链接

我希望Django Allauth发送确认电子邮件或重置密码等链接https:

像这样的东西:

https://example.com/ca/accounts/confirm-email/picuwfpjpptjswi50x5zb4gtsqptmwkscea445kadnbsfwcyij3fdnblery4onuq/

根据官方文档,只更改其中的以下设置settings.py应该有效:

ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
Run Code Online (Sandbox Code Playgroud)

但我继续得到链接,http而不是https像这样:

http://example.com/ca/accounts/confirm-email/picuwfpjpptjswi50x5zb4gtsqptmwkscea445kadnbsfwcyij3fdnblery4onuq/

我错过了什么吗?谢谢!

django https django-allauth

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

PyQt 5和4k屏幕

我正在尝试将现有的PyQt5应用迁移到窗口10的高dpi。

Qt5本身的文档在这里谈到了高dpi缩放:http ://doc.qt.io/qt-5/highdpi.html

QT_AUTO_SCREEN_SCALE_FACTOR to "1".
Run Code Online (Sandbox Code Playgroud)

但是我不能在python代码中适应这个:/

任何的想法 ?

python dpi qt5 pyqt5

3
推荐指数
1
解决办法
3289
查看次数

cv2.VideoCapture rtsp onvif 摄像头时出现“服务器回复中的不匹配传输”,如何解决?

我在 Windows 10 上使用 python 3.6.4,通过 pip 安装了 opencv (3.4)。这是我正在使用的代码:

import numpy as np
import cv2
cap = cv2.VideoCapture("rtsp://192.168.0.100:554/onvif1")
while(True):
    ret, frame = cap.read()
    print(frame)
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

[rtsp @ 0000016f6d5995a0] 服务器回复中的不匹配传输警告:打开文件时出错(/build/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:834)警告:rtsp://192.168.0.100:554/onvif1(/build/ opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:835)

但是当我使用 ffmpeg 代码时:

ffplay rtsp://192.168.0.100:554/onvif1 --> Capture oke
ffplay -rtsp_transport udp rtsp://192.168.0.100:554/onvif1 --> Capture oke
ffplay -rtsp_transport tcp rtsp://192.168.0.100:554/onvif1 --> Nonmatching transport in server reply
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

python opencv rtsp

3
推荐指数
1
解决办法
7586
查看次数

在Python库中存储OAuth令牌

我有一个Python服务,该服务导入了一个与PayPal API对话的库。有一个配置文件被传递到该库中__init__(),其中包含PayPal API用户名和密码。

使用用户名和密码调用PayPal API令牌终结点将返回用于在付费呼叫期间进行身份验证的令牌。但是,此令牌持续90分钟,应重新使用。

此服务有多个实例在不同的服务器上运行,它们都需要共享一个秘密令牌。

存储这9分钟的令牌的最佳方法是什么?

python paypal oauth

3
推荐指数
1
解决办法
618
查看次数

python(commands.getoutput)无法识别别名Linux命令

我正在使用Ubuntu 12.4,我安装了matlab.通常,为了从终端调用matlab,我必须输入'〜/ MATLAB/bin/matlab'.显然这有点烦人所以我通过添加别名这个命令

alias matlab='sh ~/MATLAB/bin/matlab'
Run Code Online (Sandbox Code Playgroud)

到.bashrc.现在一切都很黄金,在终端(bash)中输入'matlab'可以在任何目录下运行.

当我试图从python脚本调用Matlab时出现问题.有这样的声明:

>>> commands.getoutput('matlab')
'sh: 1: matlab: not found'
Run Code Online (Sandbox Code Playgroud)

因为似乎别名没有得到承认.只想确认一下:

>>> commands.getoutput('~/MATLAB/bin/matlab')
Run Code Online (Sandbox Code Playgroud)

就像一个魅力,和

>>> commands.getoutput('echo $SHELL')
'/bin/bash'
Run Code Online (Sandbox Code Playgroud)

确实验证python正试图在bash中执行cmd ...

知道这里发生了什么吗?为什么别名被认可?如何/可以修复?

谢谢!

python linux

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