小编Ame*_*mey的帖子

Python unitest - 在测试中使用模块和类级别设置函数中定义的变量

Python unittest使用nosetests来试验Python Class和Module fixture,在我的测试中进行最小化设置.

我面临的问题是,我不确定如何使用我的测试中setupUpModulesetUpClass函数和函数中定义的任何变量(例如: - test_1).

这是我用来尝试的:

import unittest

def setUpModule():
    a = "Setup Module variable"
    print "Setup Module"

def tearDownModule():
    print "Closing Module"

class TrialTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print a #<======
        b = "Setup Class variable"

    @classmethod
    def tearDownClass(cls):
        print "Closing Setup Class"

    def test_1(self):
        print "in test 1"
        print a #<======
        print b #<======

    def test_2(self):
        print "in test 2"

    def test_3(self):
        print "in test 3"

    def test_4(self): …
Run Code Online (Sandbox Code Playgroud)

python oop unit-testing nose python-unittest

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

有没有办法用Selenium测试响应式CSS?

我公司的开发人员已经将我们的网站实现为CSS响应,我很困惑如何利用Selenium来测试他们的工作.我一直在使用Selenium WebDriver(Selenium 2)与Ruby一起用于其他方面.

在网上做了一些研究之后,我遇到了多个工具,但没有一个值得自动化,因为它们...... aaa ...只是用于手动检查不同屏幕尺寸的网络工具.

一些例子 -

  1. Resonsive CSS布局的设备测试(手动)
  2. Responsinator
  3. Responsive.is
  4. Responsivepx(更好的控制)

但我可以使用selenium以及使用sel2/ruby​​轻松实现上述目的

@driver.manage.window.resize_to(480, 725) #iphone potrait
Run Code Online (Sandbox Code Playgroud)

需要帮助

  • 如何实际测试css是否自动 "响应" ?
  • 检查页面是否响应窗口大小调整的常用属性/方面是什么?
  • 有没有人使用Selenium来QA响应式CSS?

css ruby testing responsive-design selenium-webdriver

19
推荐指数
2
解决办法
7937
查看次数

将隐式等待和显式等待组合在一起会导致意外的等待时间

我的两个场景 -

1)首先

@driver.manage.timeouts.implicit_wait = 30
@wait = Selenium::WebDriver::Wait.new(:timeout => 45) # Time greater than implicit
@wait.until {@driver.find_element(:tag_name => "body").text.include?("hey")}
Run Code Online (Sandbox Code Playgroud)

这给了驱动程序45秒搜索文本(这是预期的)

2)第二

@driver.manage.timeouts.implicit_wait = 30
@wait = Selenium::WebDriver::Wait.new(:timeout => 5) # Time less than implicit
@wait.until {@driver.find_element(:tag_name => "body").text.include?("hey")}
Run Code Online (Sandbox Code Playgroud)

这现在为驱动程序提供了30秒的搜索时间(不是预期的)

有没有办法让硒等待explicit等待时间而不是两者中的较大者?

注意 - 不是声明隐式等待时间不是一个选项,因为每次驱动程序无法找到某些内容时我都无法让selenium挂起.

使用Selenium版本30,windows,ff

ruby selenium webdriver selenium-webdriver

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

如何杀死运行时间超过30分钟的Windows进程

我基本上需要实现两件事,

  1. 找到在Windows服务器上运行的所有"firefox.exe"进程
  2. 杀死跑步时间超过30分钟的人

我有点零碎,但不知道如何整合所有它使它作为一个Windows服务.

到目前为止我所拥有的 -

1)找到所有正在运行的firefox进程的方法

wmic process get name,creationdate, processid | findstr firefox
Run Code Online (Sandbox Code Playgroud)

2)基于PID杀死进程的方法

taskkill /PID 827
Run Code Online (Sandbox Code Playgroud)

还剩下什么?

  • 计算基于creationdate,PID运行时间超过30分钟
  • 使用该taskkill命令可以按顺序终止符合上述条件的所有PID
  • 设置这是一项服务(这我可以搞清楚)

windows service process batch-file

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

如何在Perl中捕获"无法解码JSON"错误消息?

所以我试图加载测试REST API,它返回一个JSON值.

为此,我创建了perl脚本的多个实例.

Perl脚本基本上调用该URL,并尝试decode_json.显然,当产生大量负载时,它会失败.

现在我面临的问题是 - 命令提示符上显示错误,但不会在文件中写入该错误消息.

错误消息是

malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "Can't connect to 209...") at json_load_test.pl line 39.

在第39行以下的所有三次尝试中,指的是:

decode_json($actual_response);
Run Code Online (Sandbox Code Playgroud)

我只是在命令提示符下运行脚本:

perl json_load_test.pl >> logs/output.txt 
Run Code Online (Sandbox Code Playgroud)

我期待在"output.txt"中写下错误消息

我的三次失败尝试如下.

尝试1:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response = $ua->get("http://$j_env/jobs/all.json?status=active");
my $actual_response=$response->decoded_content;
decode_json($actual_response);
if ($? == -1)
{print "\n Failed to execute: $!\n"; }
Run Code Online (Sandbox Code Playgroud)

尝试2:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response …
Run Code Online (Sandbox Code Playgroud)

perl json load-testing stderr

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

使用Ruby在Selenium WebDriver中设置setSpeed

有没有办法在ruby中设置Selenium Webdriver的执行速度.

在perl中,硒1(RC)有 $sel->set_speed("500");

但是由于Selenium RC的一些限制,我不得不转向Selenium Webdriver并且不得不开始使用Ruby,我找不到相同的功能.

在某处读取选项"Slow","Medium"和"Fast"作为在C#和Perl中设置速度的参数,但不在Ruby中.

注意 - 我确实设置了超时,@driver.manage.timeouts.implicit_wait = 30但我正在寻找执行速度.

ruby selenium webdriver selenium-webdriver

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

Selenium Grid2 - 远程节点未连接到HUB

我目前的设置是我在Windows机器上运行作为集线器的selenium RC(假设机器名称是machine.name.com).我使用以下命令启动它

java -jar selenium-server2.15.jar -role hub -port 5555
Run Code Online (Sandbox Code Playgroud)

我有一个在同一台机器上运行的selenium节点,它注册到上面的节点.我使用以下命令启动节点

java -jar selenium-server2.15.jar -role node -port 5554 -hub http://machine.name.com:5555/grid/register
Run Code Online (Sandbox Code Playgroud)

此节点已成功注册,我也可以运行此节点的测试.

现在我有另一台机器(LINUX一个 - 让我们假设这台机器的IP地址是10.123.123.123),表格我希望在5555端口的windows(machine.name.com)机器上运行注册到集线器的另一个节点我使用以下命令启动节点.

java -jar selenium-server2.15.jar -role node -port 5572 -hub http://machine.name.com:5555/grid/register -browser browserName=chrome,platform=LINUX,maxInstances=5
Run Code Online (Sandbox Code Playgroud)

问题是该节点没有被HUB注册.

我确实知道Hub和Node已经检测到对方,因为当我在浏览器上点击 http://machine.name.com:5555/console时,两个节点都会显示出来.但Linux机器旁边有一条错误信息" http://10.123.123.123:5572上收听(目前无法联系) "

并且不能从该节点运行硒测试.

我在这里阅读seleniumgroups ,远程节点也必须定义-hubHost键值对.所以我也尝试了以下命令,但没有成功

java -jar selenium-server2.15.jar -role node -port 5572 -hub http://machine.name.com:5555/grid/register -browser browserName=chrome,platform=LINUX, maxInstances=5 -hubHost "machine.name.com"
Run Code Online (Sandbox Code Playgroud)

但是这也没有注册节点.

请注意,linux机器上的控制台上没有抛出任何错误.所有显示的是 -

13:20:55.891 INFO - starting auto register thread. Will try to register every 5000ms
13:20:55.891 …
Run Code Online (Sandbox Code Playgroud)

selenium selenium-grid selenium-rc selenium-webdriver

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

使用Ruby Test Unit在一个脚本中并行运行多个测试

我在一个ruby脚本中有4个测试,我使用命令运行

ruby test.rb
Run Code Online (Sandbox Code Playgroud)

外观看起来像

Loaded suite test
Started
....

Finished in 50.326546 seconds.

4 tests, 5 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
Run Code Online (Sandbox Code Playgroud)

我想要实现的是,并行运行所有4个测试而不是顺序测试.像4个线程一样运行一个测试,有效地将执行时间减少到4个测试中最慢的时间+并行执行的时间很少.

我遇到了这个,但这似乎并行运行多个ruby测试文件 - 比如说我有test1.rb,test2.rb test3.rb,然后所有这三个文件将并行运行.

任何帮助将不胜感激.

ruby parallel-processing unit-testing testunit

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

真实世界的例子来决定哪种排序算法效果最好

在得到答案之前,我冒着被关闭这个问题的风险,但我确实想知道答案.所以这里.


我目前正在尝试学习算法,我开始理解它,但不能与之相关.

我理解时间复杂性空间复杂性.我也了解一些基于伪代码的排序算法

排序算法如

  1. 冒泡排序
  2. 插入排序
  3. 选择排序
  4. 快速排序
  5. 归并
  6. Heapsort(一些什么)

我也知道Best CaseWorst Case场景(平均情况不是那么多).


一些在线相关参考文献

  • 以图形方式显示以上所有的好地方.
  • 这也给了我一个很好的理解.

但我的问题是 - 有人可以给我真实世界的例子来实现这些排序算法.

sorting algorithm time-complexity space-complexity

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

Pytest不会在类中获取测试方法

总是使用python unittest2,刚刚开始迁移到pytest.当然,我试图绘制相似之处,而我无法弄清楚的一件事是:

问题为什么Pytest没有选择我在"test"类中​​定义的测试方法.

什么对我有用

# login_test.py
import pytest
from frontend.app.login.login import LoginPage

@pytest.fixture
def setup():
    login = LoginPage()
    return login

def test_successful_login(setup):
    login = setup
    login.login("incorrect username","incorrect password")
    assert login.error_msg_label().text == 'Invalid Credentials'
Run Code Online (Sandbox Code Playgroud)

什么对我不起作用(不起作用=测试方法没有被发现)

# login_test.py 
import pytest
from frontend.app.login.login import LoginPage


class LoginTestSuite(object):

    @pytest.fixture
    def setup():
        login = LoginPage()
        return login

    def test_invalid_login(self, setup):
        login = setup
        login.login("incorrect username","incorrect password")
        assert login.error_msg_label().text == 'Invalid Credentials'
Run Code Online (Sandbox Code Playgroud)

pytest.ini我有

# pytest.ini
[pytest]
python_files = *_test.py
python_classes …
Run Code Online (Sandbox Code Playgroud)

python pytest python-3.x

3
推荐指数
2
解决办法
1493
查看次数