Python unittest使用nosetests来试验Python Class和Module fixture,在我的测试中进行最小化设置.
我面临的问题是,我不确定如何使用我的测试中setupUpModule
的setUpClass
函数和函数中定义的任何变量(例如: - 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) 我公司的开发人员已经将我们的网站实现为CSS响应,我很困惑如何利用Selenium来测试他们的工作.我一直在使用Selenium WebDriver(Selenium 2)与Ruby一起用于其他方面.
在网上做了一些研究之后,我遇到了多个工具,但没有一个值得自动化,因为它们...... aaa ...只是用于手动检查不同屏幕尺寸的网络工具.
一些例子 -
但我可以使用selenium以及使用sel2/ruby轻松实现上述目的
@driver.manage.window.resize_to(480, 725) #iphone potrait
Run Code Online (Sandbox Code Playgroud)
需要帮助
我的两个场景 -
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
我基本上需要实现两件事,
我有点零碎,但不知道如何整合所有它使它作为一个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所以我试图加载测试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"中写下错误消息
我的三次失败尝试如下.
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)
my $ua = LWP::UserAgent->new;
$ua->timeout(3);
$ua->env_proxy;
my $response …
Run Code Online (Sandbox Code Playgroud) 有没有办法在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
但我正在寻找执行速度.
我目前的设置是我在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) 我在一个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,然后所有这三个文件将并行运行.
任何帮助将不胜感激.
在得到答案之前,我冒着被关闭这个问题的风险,但我确实想知道答案.所以这里.
我目前正在尝试学习算法,我开始理解它,但不能与之相关.
我理解时间复杂性和空间复杂性.我也了解一些基于伪代码的排序算法
排序算法如
我也知道Best Case和Worst Case场景(平均情况不是那么多).
一些在线相关参考文献
但我的问题是 - 有人可以给我真实世界的例子来实现这些排序算法.
总是使用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) ruby ×4
selenium ×3
python ×2
unit-testing ×2
webdriver ×2
algorithm ×1
batch-file ×1
css ×1
json ×1
load-testing ×1
nose ×1
oop ×1
perl ×1
process ×1
pytest ×1
python-3.x ×1
selenium-rc ×1
service ×1
sorting ×1
stderr ×1
testing ×1
testunit ×1
windows ×1