It seems tests are run in alphabetic order by default. I'm trying to run them in random order. The following shows what I have and the commented out lines at the bottom show the different commands I've tried. Nothing has worked so far. They all pass but run alphabetically each time. import unittest import random from appium import webdriver from PIL import Image, ImageChops class SimpleNucleoTests(unittest.TestCase): @classmethod def setUpClass(self): # set up appium desired_caps = {} desired_caps["app"] = 'C:\\Temp\\Acist\\acist-nucleo\\AcistNucleoProtoGUI.exe' desired_caps['platformName'] = 'Windows' desired_caps['deviceName'] = 'WindowsPC' self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) @classmethod def tearDownClass(self): self.driver.quit() def test_defaultLayout(self): self.driver.find_element_by_accessibility_id("InjectorButton").click() self.driver.get_screenshot_as_file('C:\\Temp\\ss_new.png') new_image = Image.open("C:\\temp\\ss_new.png") orig_image = Image.open("C:\\temp\\ss_orig.png") diff = ImageChops.difference(new_image, orig_image) if diff.getbbox(): diff.show() else: print("Images are the same") self.assertEqual(diff.getbbox(), None) def getFlowRate(self): displaytext = self.driver.find_element_by_accessibility_id("FlowRateField").find_element_by_accessibility_id("InputTextBox").text return displaytext def test_defaultFlowRate(self): self.driver.find_element_by_accessibility_id("InjectorButton").click() self.assertEqual(self.getFlowRate(), "4.0") def test_flowRateUp(self): self.driver.find_element_by_accessibility_id("InjectorButton").click() self.driver.find_element_by_accessibility_id("UpButton").click() self.assertEqual(self.getFlowRate(), "4.5") def test_flowRateDown(self): self.driver.find_element_by_accessibility_id("InjectorButton").click() self.driver.find_element_by_accessibility_id("DownButton").click() self.assertEqual(self.getFlowRate(), "3.5") def getVolume(self): displaytext = self.driver.find_element_by_accessibility_id("VolumeField").find_element_by_accessibility_id("InputTextBox").text return displaytext def test_defaultVolume(self): self.driver.find_element_by_accessibility_id("InjectorButton").click() self.assertEqual(self.getVolume(), "6.0") def test_volumeUp(self): self.driver.find_element_by_accessibility_id("InjectorButton").click() self.driver.find_element_by_accessibility_id("VolumeField").find_element_by_accessibility_id("UpButton").click() self.assertEqual(self.getVolume(), "6.5") def test_volumeDown(self): print("Starting test 'volumeDown'") self.driver.find_element_by_accessibility_id("InjectorButton").click() self.driver.find_element_by_accessibility_id("VolumeField").find_element_by_accessibility_id("DownButton").click() self.assertEqual(self.getVolume(), "5.5") if __name__ == '__main__': # unittest.TestLoader().main suite = unittest.TestLoader().sortTestMethodsUsing = None unittest.TextTestRunner(verbosity=2).run(suite) # unittest.TestLoader().sortTestMethodsUsing = None # unittest.TestLoader.sortTestMethodsUsing = lambda self, a, b: random.choice([1, 0, -1]) # unittest.TestLoader.sortTestMethodsUsing = lambda _, x, y: cmp(y, x) # unittest.TextTestRunner(verbosity=2).main() # unittest.main(verbosity=2) Continue reading...