set_index
и назначить его
df['B2']=df2.drop_duplicates('A2').set_index('A2')['B2']
df
Out[728]:
A B B2
A 1 0 AA
B 1 0 BB
C 0 0 CC
D 1 0 DD
E 0 0 EE
F 1 1 FF
G 0 1 GG
Вы пробовали Сетку Селена? Я думаю, что это создает довольно хороший сводный отчет, который показывает детали, в которых Вы нуждаетесь. Я могу быть неправым, поскольку я не использовал его долгое время.
Я закончил тем, что изменил protocol.rb Селена для повышения AssertionFailedError
с обоими @browser_string
и сообщение возвратило из Селена RC, если ответ не запускался с "OK". Я также изменил http_post
метод для возврата целого органа по ответу и method_missing
возвратить массив возвращаемых значений для издания get_X управляет к Селену RC.
Добавьте этот код к коду в вопросе, и необходимо смочь видеть, какие утверждения перестали работать на который браузеры.
# Overrides a few Driver methods to make assertions return the
# browser string if they fail
module Selenium
module Client
class Driver
def remote_control_command(verb, args=[])
timeout(default_timeout_in_seconds) do
status, response = http_post(http_request_for(verb, args))
raise Test::Unit::AssertionFailedError.new("Browser:#{@browser_string} result:#{response}") if status != 'OK'
return response[3..-1]
end
end
def http_post(data)
http = Net::HTTP.new(@server_host, @server_port)
response = http.post('/selenium-server/driver/', data, HTTP_HEADERS)
#return the first 2 characters and the entire response body
[ response.body[0..1], response.body ]
end
end
end
end
#Modify your method_missing to use seleniums.map to return the
#results of all the function calls as an array
class SeleniumTest < Test::Unit::TestCase
def method_missing(method_name, *args)
self.class.seleniums.map do |selenium_driver|
selenium_driver.send(method_name, *args)
end
end
end
Отказ от ответственности: Не эксперт по селену.
Вы просто хотите знать, какой браузер перестал работать, или Вы хотите запустить тест через все браузеры и затем сообщить о полных отказах, когда он сделан?
Первый довольно прост, если Вы храните драйверы хешем в Вашей установке. (Я уверен, что существует неженка способ сделать это с Hash.inject, но я ленив.)
@seleniums = {}
%w(*firefox *iexplore).each do |browser|
puts 'creating browser ' + browser
@seleniums[browser] = Selenium::SeleniumDriver.new("localhost", 4444, browser, "http://localhost:3003", 10000)
end
Затем измените свою базовую функцию для изменения исключений для включения названия используемого драйвера, что-то как:
@seleniums.each do |name, driver|
begin
driver.send method_name, *args
rescue Exception => ex
raise ex.exception(ex.message + " (in #{name})")
end
end
Должен получить Вас близко.
вам нужно обрабатывать каждый тест независимо. Таким образом, если один тест не прошел, он продолжит тестирование других тестов. Ознакомьтесь с phpunit и selenium rc