📄 functional.py
字号:
class RegressionTestTicket5497a(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/5497 a Open ticket, component changed, owner not changed""" ticketid = self._tester.create_ticket("regression test 5497a") self._tester.go_to_ticket(ticketid) tc.formvalue('propertyform', 'field-component', 'regression5497') tc.submit('submit') tc.find(regex_owned_by('user'))class RegressionTestTicket5497b(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/5497 b Open ticket, component changed, owner changed""" ticketid = self._tester.create_ticket("regression test 5497b") self._tester.go_to_ticket(ticketid) tc.formvalue('propertyform', 'field-component', 'regression5497') tc.formvalue('propertyform', 'action', 'reassign') tc.formvalue('propertyform', 'action_reassign_reassign_owner', 'admin') tc.submit('submit') tc.notfind(regex_owned_by('user')) tc.find(regex_owned_by('admin'))class RegressionTestTicket5497c(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/5497 c New ticket, component changed, owner not changed""" ticketid = self._tester.create_ticket("regression test 5497c", {'component':'regression5497'}) self._tester.go_to_ticket(ticketid) tc.find(regex_owned_by('user'))class RegressionTestTicket5497d(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/5497 d New ticket, component changed, owner changed""" ticketid = self._tester.create_ticket("regression test 5497d", {'component':'regression5497', 'owner':'admin'}) self._tester.go_to_ticket(ticketid) tc.find(regex_owned_by('admin'))class RegressionTestTicket5602(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/5602""" # Create a set of tickets, and assign them all to a milestone milestone = self._tester.create_milestone() ids = [self._tester.create_ticket() for x in range(5)] [self._tester.ticket_set_milestone(x, milestone) for x in ids] # Need a ticket in each state: new, assigned, accepted, closed, # reopened # leave ids[0] as new # make ids[1] be assigned self._tester.go_to_ticket(ids[1]) tc.formvalue('propertyform', 'action', 'reassign') tc.formvalue('propertyform', 'action_reassign_reassign_owner', 'admin') tc.submit('submit') # make ids[2] be accepted self._tester.go_to_ticket(ids[2]) tc.formvalue('propertyform', 'action', 'accept') tc.submit('submit') # make ids[3] be closed self._tester.go_to_ticket(ids[3]) tc.formvalue('propertyform', 'action', 'resolve') tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed') tc.submit('submit') # make ids[4] be reopened self._tester.go_to_ticket(ids[4]) tc.formvalue('propertyform', 'action', 'resolve') tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed') tc.submit('submit') # FIXME: we have to wait a second to avoid "IntegrityError: columns # ticket, time, field are not unique" time.sleep(1) tc.formvalue('propertyform', 'action', 'reopen') tc.submit('submit') tc.show() tc.notfind("Python Traceback") # Go to the milestone and follow the links to the closed and active # tickets. tc.go(self._tester.url + "/roadmap") tc.follow(milestone) tc.follow("Closed tickets:") tc.find("Resolution:[ \t\n]+fixed") tc.back() tc.follow("Active tickets:") tc.find("Status:[ \t\n]+new") tc.find("Status:[ \t\n]+assigned") tc.find("Status:[ \t\n]+accepted") tc.notfind("Status:[ \t\n]+closed") tc.find("Status:[ \t\n]+reopened")class RegressionTestTicket5687(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/5687""" self._tester.logout() self._tester.login('user') ticketid = self._tester.create_ticket() self._tester.logout() self._tester.login('admin')class RegressionTestTicket5930(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/5930 TypeError: from_string() takes exactly 3 non-keyword arguments (4 given) Caused by a saved query """ self._tester.create_report('Saved Query', 'query:version=1.0', '') tc.notfind(internal_error) # TODO: Add a testcase for the following: # Can you also throw in addition of a 1.0 ticket and a 2.0 ticket # as part of the demo env, then see that only the correct one shows # up in the report?class RegressionTestTicket6048(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/6048""" # Setup the DeleteTicket plugin plugin = open(os.path.join(self._testenv.command_cwd, 'sample-plugins', 'workflow', 'DeleteTicket.py')).read() open(os.path.join(self._testenv.tracdir, 'plugins', 'DeleteTicket.py'), 'w').write(plugin) env = self._testenv.get_trac_environment() prevconfig = env.config.get('ticket', 'workflow') env.config.set('ticket', 'workflow', prevconfig + ',DeleteTicketActionController') env.config.save() env = self._testenv.get_trac_environment() # reload environment # Create a ticket and delete it ticket_id = self._tester.create_ticket( summary='RegressionTestTicket6048') # (Create a second ticket so that the ticket id does not get reused # and confuse the tester object.) self._tester.create_ticket(summary='RegressionTestTicket6048b') self._tester.go_to_ticket(ticket_id) tc.find('delete ticket') tc.formvalue('propertyform', 'action', 'delete') tc.submit('submit') self._tester.go_to_ticket(ticket_id) tc.find('Error: Invalid Ticket Number') tc.find('Ticket %s does not exist.' % ticket_id) # Remove the DeleteTicket plugin env.config.set('ticket', 'workflow', prevconfig) env.config.save() env = self._testenv.get_trac_environment() # reload environment for ext in ('py', 'pyc', 'pyo'): filename = os.path.join(self._testenv.tracdir, 'plugins', 'DeleteTicket.%s' % ext) if os.path.exists(filename): os.unlink(filename)class RegressionTestTicket6747(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/6747""" env = self._testenv.get_trac_environment() env.config.set('ticket-workflow', 'resolve.operations', 'set_resolution,set_owner') env.config.set('ticket-workflow', 'resolve.set_owner', 'a_specified_owner') env.config.save() try: self._testenv.restart() ticket_id = self._tester.create_ticket("RegressionTestTicket6747") self._tester.go_to_ticket(ticket_id) tc.find("a_specified_owner") tc.notfind("a_specified_owneras") finally: # Undo the config change to avoid causing problems for later # tests. env.config.set('ticket-workflow', 'resolve.operations', 'set_resolution') env.config.remove('ticket-workflow', 'resolve.set_owner') env.config.save() self._testenv.restart()class RegressionTestTicket6879a(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/6879 a Make sure that previewing a close does not make the available actions be those for the close status. """ # create a ticket, then preview resolving the ticket twice ticket_id = self._tester.create_ticket("RegressionTestTicket6879 a") self._tester.go_to_ticket(ticket_id) tc.formvalue('propertyform', 'action', 'resolve') tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed') tc.submit('preview') tc.formvalue('propertyform', 'action', 'resolve') tc.submit('preview')class RegressionTestTicket6879b(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/6879 a Make sure that previewing a close does not make the available actions be those for the close status. """ # create a ticket, then preview resolving the ticket twice ticket_id = self._tester.create_ticket("RegressionTestTicket6879 b") self._tester.go_to_ticket(ticket_id) tc.formvalue('propertyform', 'action', 'resolve') tc.formvalue('propertyform', 'action_resolve_resolve_resolution', 'fixed') tc.submit('preview') tc.formvalue('propertyform', 'action', 'resolve') tc.submit('submit')class RegressionTestTicket6912a(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/6912 a""" try: self._tester.create_component(name='RegressionTestTicket6912a', user='') except twill.utils.mechanize.ClientForm.ItemNotFoundError, e: raise twill.errors.TwillAssertionError(e)class RegressionTestTicket6912b(FunctionalTwillTestCaseSetup): def runTest(self): """Test for regression of http://trac.edgewall.org/ticket/6912 b""" self._tester.create_component(name='RegressionTestTicket6912b', user='admin') tc.follow('RegressionTestTicket6912b') try: tc.formvalue('modcomp', 'owner', '') except twill.utils.mechanize.ClientForm.ItemNotFoundError, e: raise twill.errors.TwillAssertionError(e) tc.formvalue('modcomp', 'save', 'Save') tc.submit() tc.find('RegressionTestTicket6912b</a>[ \n\t]*</td>[ \n\t]*' '<td class="owner"></td>', 's')def functionalSuite(suite=None): if not suite: import trac.tests.functional.testcases suite = trac.tests.functional.testcases.functionalSuite() suite.addTest(TestTickets()) suite.addTest(TestTicketPreview()) suite.addTest(TestTicketNoSummary()) suite.addTest(TestTicketAltFormats()) suite.addTest(TestTicketCSVFormat()) suite.addTest(TestTicketTabFormat()) suite.addTest(TestTicketRSSFormat()) suite.addTest(TestTicketSearch()) suite.addTest(TestNonTicketSearch()) suite.addTest(TestTicketHistory()) suite.addTest(TestTicketHistoryDiff()) suite.addTest(TestTicketQueryLinks()) suite.addTest(TestTimelineTicketDetails()) suite.addTest(TestAdminComponent()) suite.addTest(TestAdminComponentDuplicates()) suite.addTest(TestAdminComponentRemoval()) suite.addTest(TestAdminComponentNonRemoval()) suite.addTest(TestAdminComponentDefault()) suite.addTest(TestAdminComponentDetail()) suite.addTest(TestAdminMilestone()) suite.addTest(TestAdminMilestoneSpace()) suite.addTest(TestAdminMilestoneDuplicates()) suite.addTest(TestAdminMilestoneDetail()) suite.addTest(TestAdminMilestoneDue()) suite.addTest(TestAdminMilestoneDetailDue()) suite.addTest(TestAdminMilestoneCompleted()) suite.addTest(TestAdminMilestoneCompletedFuture()) suite.addTest(TestAdminMilestoneRemove()) suite.addTest(TestAdminMilestoneRemoveMulti()) suite.addTest(TestAdminMilestoneNonRemoval()) suite.addTest(TestAdminMilestoneDefault()) suite.addTest(TestAdminPriority()) suite.addTest(TestAdminPriorityModify()) suite.addTest(TestAdminPriorityRemove()) suite.addTest(TestAdminPriorityRemoveMulti()) suite.addTest(TestAdminPriorityNonRemoval()) suite.addTest(TestAdminPriorityDefault()) suite.addTest(TestAdminPriorityDetail()) suite.addTest(TestAdminPriorityRenumber()) suite.addTest(TestAdminPriorityRenumberDup()) suite.addTest(TestAdminResolution()) suite.addTest(TestAdminResolutionDuplicates()) suite.addTest(TestAdminSeverity()) suite.addTest(TestAdminSeverityDuplicates()) suite.addTest(TestAdminType()) suite.addTest(TestAdminTypeDuplicates()) suite.addTest(TestAdminVersion()) suite.addTest(TestAdminVersionDuplicates()) suite.addTest(TestAdminVersionDetail()) suite.addTest(TestAdminVersionDetailTime()) suite.addTest(TestAdminVersionDetailCancel()) suite.addTest(TestAdminVersionRemove()) suite.addTest(TestAdminVersionRemoveMulti()) suite.addTest(TestAdminVersionNonRemoval()) suite.addTest(TestAdminVersionDefault()) suite.addTest(TestNewReport()) suite.addTest(RegressionTestRev5665()) suite.addTest(RegressionTestRev5994()) suite.addTest(RegressionTestTicket4447()) suite.addTest(RegressionTestTicket4630a()) suite.addTest(RegressionTestTicket4630b()) suite.addTest(RegressionTestTicket5022()) suite.addTest(RegressionTestTicket5394a()) suite.addTest(RegressionTestTicket5394b()) suite.addTest(RegressionTestTicket5497prep()) suite.addTest(RegressionTestTicket5497a()) suite.addTest(RegressionTestTicket5497b()) suite.addTest(RegressionTestTicket5497c()) suite.addTest(RegressionTestTicket5497d()) suite.addTest(RegressionTestTicket5602()) suite.addTest(RegressionTestTicket5687()) suite.addTest(RegressionTestTicket5930()) suite.addTest(RegressionTestTicket6048()) suite.addTest(RegressionTestTicket6747()) suite.addTest(RegressionTestTicket6879a()) suite.addTest(RegressionTestTicket6879b()) suite.addTest(RegressionTestTicket6912a()) suite.addTest(RegressionTestTicket6912b()) return suiteif __name__ == '__main__': unittest.main(defaultTest='functionalSuite')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -