Browse Source

Testing with API added

Vladimir Repin 2 years ago
parent
commit
af45b5a11a
4 changed files with 112 additions and 0 deletions
  1. 15 0
      run_tests.bat
  2. 0 0
      test/__init__.py
  3. 17 0
      test/server_poll.py
  4. 80 0
      test/txt2img_test.py

+ 15 - 0
run_tests.bat

@@ -0,0 +1,15 @@
+@echo off
+set ERROR_REPORTING=FALSE
+set COMMANDLINE_ARGS= --api
+echo Launching SDWebUI...
+start "SDWebUITest" webui.bat
+
+if not defined PYTHON (set PYTHON=python)
+if not defined VENV_DIR (set VENV_DIR=venv)
+set PYTHON="%~dp0%VENV_DIR%\Scripts\Python.exe"
+%PYTHON% test/server_poll.py
+for /f "tokens=2 delims=," %%a in ('tasklist /v /fo csv ^| findstr /i "SDWebUITest"') do set "$PID=%%a"
+
+taskkill /PID %$PID% >nul 2>&1
+
+pause

+ 0 - 0
test/__init__.py


+ 17 - 0
test/server_poll.py

@@ -0,0 +1,17 @@
+import unittest
+import requests
+import time
+
+timeout_threshold = 240
+start_time = time.time()
+while time.time()-start_time < timeout_threshold:
+    try:
+        requests.head("http://localhost:7860/")
+        break
+    except requests.exceptions.ConnectionError:
+        pass
+if time.time()-start_time < timeout_threshold:
+    suite = unittest.TestLoader().discover('', pattern='*_test.py')
+    result = unittest.TextTestRunner(verbosity=2).run(suite)
+else:
+    print("Launch unsuccessful")

+ 80 - 0
test/txt2img_test.py

@@ -0,0 +1,80 @@
+import unittest
+import requests
+import time
+
+url_txt2img = "http://localhost:7860/sdapi/v1/txt2img"
+simple_txt2img = {
+    "enable_hr": False,
+    "denoising_strength": 0,
+    "firstphase_width": 0,
+    "firstphase_height": 0,
+    "prompt": "example prompt",
+    "styles": [
+      ""
+    ],
+    "seed": -1,
+    "subseed": -1,
+    "subseed_strength": 0,
+    "seed_resize_from_h": -1,
+    "seed_resize_from_w": -1,
+    "batch_size": 1,
+    "n_iter": 1,
+    "steps": 5,
+    "cfg_scale": 7,
+    "width": 64,
+    "height": 64,
+    "restore_faces": False,
+    "tiling": False,
+    "negative_prompt": "",
+    "eta": 0,
+    "s_churn": 0,
+    "s_tmax": 0,
+    "s_tmin": 0,
+    "s_noise": 1,
+    "sampler_index": "Euler a"
+}
+
+class TestTxt2ImgWorking(unittest.TestCase):
+    def test_txt2img_simple_performed(self):
+        self.assertEqual(requests.post(url_txt2img, json=simple_txt2img).status_code, 200)
+
+    def test_txt2img_with_negative_prompt_performed(self):
+        params = simple_txt2img.copy()
+        params["negative_prompt"] = "example negative prompt"
+        self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200)
+
+    def test_txt2img_not_square_image_performed(self):
+        params = simple_txt2img.copy()
+        params["height"] = 128
+        self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200)
+
+    def test_txt2img_with_hrfix_performed(self):
+        params = simple_txt2img.copy()
+        params["enable_hr"] = True
+        self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200)
+
+    def test_txt2img_with_restore_faces_performed(self):
+        params = simple_txt2img.copy()
+        params["restore_faces"] = True
+        self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200)
+
+    def test_txt2img_with_tiling_faces_performed(self):
+        params = simple_txt2img.copy()
+        params["tiling"] = True
+        self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200)
+
+    def test_txt2img_with_vanilla_sampler_performed(self):
+        params = simple_txt2img.copy()
+        params["sampler_index"] = "PLMS"
+        self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200)
+
+    def test_txt2img_multiple_batches_performed(self):
+        params = simple_txt2img.copy()
+        params["n_iter"] = 2
+        self.assertEqual(requests.post(url_txt2img, json=params).status_code, 200)
+
+class TestTxt2ImgCorrectness(unittest.TestCase):
+    pass
+
+if __name__ == "__main__":
+    unittest.main()