UnitTestBot / UTBotJava

Automated unit test generation and precise code analysis for Java
Apache License 2.0
137 stars 43 forks source link

Unit test generation does not work for python in PyCharm #2670

Open fhg-isi opened 1 year ago

fhg-isi commented 1 year ago

Description

If I select "Generate..." from the context menu in PyCharm, I would expect to see an option "Test with UnitTestBot..." as shown in the Video of the Extension:

image

However, the option is missing.

=> How to use UnitTestBot for Python code in PyCharm?

"UnitTestBot for Java/Kotlin, C/C++, Python, JavaScript, and Go."

If the extension does not support PyCharm/Python, please write so in the plugin description or disable the extension to be shown for PyCharm.

tyuldashev commented 1 year ago

Hi, Release version works in IDEA only, with installed Python plugin you could generate tests for Python there. Don't forget to enable Experimental language support in UTBot settings.

PyCharm support is in development at the moment, you may try it by installing plugin from main branch. Download utbot-intellij-PY-main-2023.10.5369 from here and use Install from disk option from Plugin settings.

We will look how to prevent installation of improper plugin version from the Market.

fhg-isi commented 1 year ago

Thank you very much for the fast answer. I tried to enable Experimental language support in the already installed version. Now I get the expected menu option. However, the test generation fails with a NoClassDefFoundError.

Then I installed

https://github.com/UnitTestBot/UTBotJava/suites/17746700914/artifacts/1016410535

After running the command again, I got a new menu and was asked to install some missing dependencies. I did so.

Now the extension actually generates some test file.

However, it is not located at the expected target location. Also see

https://stackoverflow.com/questions/77409726/ho-to-generate-unit-tests-for-python-in-pycharm-using-src-and-test-folder-stru

image

image

image

tyuldashev commented 1 year ago

Regarding folders: it's better to have dedicated folder as I see on your screenshot test folder at the same level as src. You may point UTBot in the dialog: image

About error in the code: have you moved the test file from another folder or added second line yourself?

fhg-isi commented 1 year ago

Ah. I misinterpretet the meaning of the option. I selected the src folder. But it should be the testfolder, I guess. Maybe a better name would be "Test destination root" or so. After selecting test as "Test soruces root" now the genrated test is test/test_src_foo_foo_foo.py. However, I would expect test/foo/test_foo.py where UnitTestBot automatically detects the sub folders structure within src and applies a similar structure for the generated tests.

tyuldashev commented 1 year ago

UnitTest bot for PyCharm is available through Marketplace now. Also we hide UTBot for IDEA from the search in PyCharm.