{"id":476,"date":"2023-02-23T11:55:29","date_gmt":"2023-02-23T09:55:29","guid":{"rendered":"https:\/\/ackeeblockchain.com\/blog\/?p=476"},"modified":"2024-05-16T13:24:21","modified_gmt":"2024-05-16T11:24:21","slug":"woke-2-0-development-and-testing-framework-for-solidity","status":"publish","type":"post","link":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/","title":{"rendered":"Wake 2.0, development and testing framework for Solidity"},"content":{"rendered":"<p><strong>Note: Woke has been rebranded to Wake.<\/strong><\/p>\n<p>With Wake 2.0, we introduced an updated version of <a title=\"Woke, development &amp; testing framework for Solidity\" href=\"https:\/\/ackeeblockchain.com\/blog\/woke-our-development-and-testing-framework-for-solidity\/\">our Python-based development and testing framework.\u00a0<\/a><\/p>\n<p><strong>Let&#8217;s look closely and find out how it differs from other Python-based testing frameworks and what are <a title=\"Woke, development &amp; testing framework for Solidity\" href=\"https:\/\/ackeeblockchain.com\/blog\/woke-our-development-and-testing-framework-for-solidity\/\">Wake&#8217;s<\/a> advantages.\u00a0<\/strong><\/p>\n<h4><b>Pytypes<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Wake testing framework builds on the so-called <code>pytypes<\/code>. These are automatically generated Python files representing Solidity contracts, structs, enums, etc. in the Python world. Files in the <code>pytypes<\/code> directory are organized in such a way so that it reflected the directory structure of the original Solidity sources. <code>pytypes<\/code> not only provide auto-completion and type hints support but also work as standalone objects that do not need any external files (Solidity source files, for example). All necessary information is included in <code>pytypes.<\/code><\/span><\/p>\n<p><span style=\"font-weight: 400;\">To generate <code>pytypes<\/code> for a project in a current working directory, one can you the <code>wake init pytypes<\/code> command. An optional <code>-w<\/code><\/span><span style=\"font-weight: 400;\"> or <code>--watch<\/code> option launches the <code>pytypes<\/code> generator in watch mode. Solidity source files are watched for changes and <code>pytypes<\/code> are automatically re-generated.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Wake testing framework was inspired by <a href=\"https:\/\/github.com\/eth-brownie\/brownie\" target=\"_blank\" rel=\"noopener\">Brownie<\/a>, thus the way it interacts with the contracts may be familiar to Brownie users. However, as Wake learned from Brownie&#8217;s mistakes, there are some crucial differences and improvements.<\/span><\/p>\n<h4><b>Getting started with Wake\u00a0<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">First, a contract must be imported from <code>pytypes<\/code>. Importing contracts from different namespaces (modules) is essential as it helps to avoid name clashes.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/encryptedbae\/74899955739df68e4b259a9b1d2edf16.js\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">Like Brownie, Wake testing framework uses <a href=\"https:\/\/docs.pytest.org\/en\/7.2.x\/\" target=\"_blank\" rel=\"noopener\">pytest<\/a> to collect tests and offer various features like fixtures. From the very beginning, Wake testing framework was designed to support multichain (cross-chain) testing. Still, it is expected that most of the tests will perform single-chain testing. There is a <code>default_chain<\/code> global object that should be used for single-chain testing. It can be imported from the <code>wake.testing<\/code>\u00a0module along with all other objects one may need.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/encryptedbae\/fc329768eff513af4ebace9bd6f765a4.js\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\"><code>default_chain<\/code><\/span><span style=\"font-weight: 400;\">\u00a0can be either connected to an already running dev chain or launch a new dev chain.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/encryptedbae\/a5484f4b53e84ce6f22987dba87c07f4.js\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">With the default configuration, Wake uses Anvil as the development chain. Anvil is a part of the <a href=\"https:\/\/getfoundry.sh\/\" target=\"_blank\" rel=\"noopener\">Foundry<\/a> project. It is highly recommended to keep Anvil up-to-date: Wake development team co-operates with Anvil developers to ensure a seamless experience when writing tests.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With <code>default_chain<\/code> connected to a dev chain, it is easy to deploy the first contract using Wake testing framework.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/encryptedbae\/338cd7a5e48bccb25d1241d3f500e2e3.js\"><\/script><\/p>\n<h4><b>Main differences from Brownie<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">The previous example shows another difference from Brownie. Any additional data that modify a transaction or call are passed using keyword arguments instead of a dictionary. By default, <code>pure<\/code> and <code>view<\/code> Solidity functions (including public state variable getters) are called using <code>eth_call<\/code>, i.e. a transaction is not sent. The <code>request_type<\/code> keyword can override this.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Another significant difference from Brownie is that <code>pytypes<\/code> function calls that send a transaction return the function return value instead of a transaction object. Setting <code>return_tx=True<\/code> in a function call or even generating <code>pytypes<\/code> with <code>return_tx<\/code> implicitly set: <code>wake init pytypes --return-tx<\/code>\u00a0can override this.\u00a0<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/encryptedbae\/d9d2662967297e87b82a47591aaf5cf3.js\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">This example may show yet another advantage of Wake testing framework: it was designed to be very fast. There are a few things to keep in mind in order to achieve maximum performance:<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">Anvil should be used whenever possible<\/span><\/li>\n<li>Transaction events should be accessed only when necessary; working with <code>tx.events<\/code>\u00a0may be slow in some cases<\/li>\n<li>Transactions should be mainly sent from pre-generated accounts (<code>default_chain.accounts<\/code>); sending a transaction from any other account is possible but at the expense of poorer performance.<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Thanks to <code>pytypes<\/code>, transaction events can be worked with using native Python objects, dataclasses. <code>events<\/code> is the property of a transaction object received either by setting <code>return_tx=True<\/code> or by defining <code>tx_callback<\/code>.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/encryptedbae\/3edf5434767c6a6c9d83f989e8c7b3cc.js\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\"><code>tx_callback<\/code> is automatically called for transactions that do not have <code>return_tx=True<\/code> set. User-defined errors are also generated in the form of dataclasses. Additionally, there are two internal types of errors: <code>Error(str)<\/code> and <code>Panic(int)<\/code>. Errors are automatically raised as exceptions with <code>return_tx<\/code> set to <code>False<\/code>. There are helper context managers, <code>must_revert<\/code> and <code>may_revert<\/code>, to make handling exceptions easier.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/encryptedbae\/1329ff1d9ba3e12685edeb64ec10cf75.js\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">The mentioned above covers the key differences between Wake and Brownie. Be sure to check out our <a href=\"https:\/\/ackeeblockchain.com\/woke\/docs\/latest\/testing-framework\/overview\/\">documentation<\/a> and follow our <a href=\"https:\/\/twitter.com\/AckeeBlockchain\/\" target=\"_blank\" rel=\"noopener\">Twitter<\/a> to stay updated.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Note: Woke has been rebranded to Wake. With Wake 2.0, we introduced an updated version of our Python-based development and testing framework.\u00a0 Let&#8217;s look closely and find out how it differs from other Python-based testing frameworks and what are Wake&#8217;s advantages.\u00a0 Pytypes Wake testing framework builds on the so-called pytypes. These are automatically generated Python files representing Solidity contracts, structs, enums, etc.&hellip;<\/p>\n","protected":false},"author":15,"featured_media":477,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[65,80,103],"tags":[123,104],"class_list":["post-476","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","category-solidity","category-wake","tag-developer-tooling","tag-wake"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"Woke 2.0, development and testing framework for Solidity With Woke 2.0, we introduced an updated version of our Python-based development and testing framework.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Aleksandra Yudina\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Ackee Blockchain - Blog &amp; Research\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Wake 2.0, development and testing framework for Solidity - Ackee Blockchain\" \/>\n\t\t<meta property=\"og:description\" content=\"Woke 2.0, development and testing framework for Solidity With Woke 2.0, we introduced an updated version of our Python-based development and testing framework.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/cropped-ABCH_Logo_blue-black.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/cropped-ABCH_Logo_blue-black.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-02-23T09:55:29+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-05-16T11:24:21+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Wake 2.0, development and testing framework for Solidity - Ackee Blockchain\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Woke 2.0, development and testing framework for Solidity With Woke 2.0, we introduced an updated version of our Python-based development and testing framework.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/cropped-ABCH_Logo_blue-black.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#blogposting\",\"name\":\"Wake 2.0, development and testing framework for Solidity - Ackee Blockchain\",\"headline\":\"Wake 2.0, development and testing framework for Solidity\",\"author\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/author\\\/aleksandra-yudina\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/Woke-2.0.png\",\"width\":1972,\"height\":1360},\"datePublished\":\"2023-02-23T11:55:29+02:00\",\"dateModified\":\"2024-05-16T13:24:21+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#webpage\"},\"articleSection\":\"Announcements, Solidity, Wake, Developer tooling, Wake\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ackee.xyz\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/category\\\/announcements\\\/#listItem\",\"name\":\"Announcements\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/category\\\/announcements\\\/#listItem\",\"position\":2,\"name\":\"Announcements\",\"item\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/category\\\/announcements\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#listItem\",\"name\":\"Wake 2.0, development and testing framework for Solidity\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#listItem\",\"position\":3,\"name\":\"Wake 2.0, development and testing framework for Solidity\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/category\\\/announcements\\\/#listItem\",\"name\":\"Announcements\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/#organization\",\"name\":\"Ackee Blockchain\",\"description\":\"Blog & Research\",\"url\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/cropped-ABCH_Logo_blue-black.png\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#organizationLogo\",\"width\":5268,\"height\":825},\"image\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/author\\\/aleksandra-yudina\\\/#author\",\"url\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/author\\\/aleksandra-yudina\\\/\",\"name\":\"Aleksandra Yudina\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#authorImage\",\"url\":\"https:\\\/\\\/abchprod.wpengine.com\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/Frame-331-1-96x96.png\",\"width\":96,\"height\":96,\"caption\":\"Aleksandra Yudina\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#webpage\",\"url\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/\",\"name\":\"Wake 2.0, development and testing framework for Solidity - Ackee Blockchain\",\"description\":\"Woke 2.0, development and testing framework for Solidity With Woke 2.0, we introduced an updated version of our Python-based development and testing framework.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/author\\\/aleksandra-yudina\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/author\\\/aleksandra-yudina\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/Woke-2.0.png\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#mainImage\",\"width\":1972,\"height\":1360},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/woke-2-0-development-and-testing-framework-for-solidity\\\/#mainImage\"},\"datePublished\":\"2023-02-23T11:55:29+02:00\",\"dateModified\":\"2024-05-16T13:24:21+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/\",\"name\":\"Ackee Blockchain\",\"description\":\"Blog & Research\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/ackee.xyz\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Wake 2.0, development and testing framework for Solidity - Ackee Blockchain","description":"Woke 2.0, development and testing framework for Solidity With Woke 2.0, we introduced an updated version of our Python-based development and testing framework.","canonical_url":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#blogposting","name":"Wake 2.0, development and testing framework for Solidity - Ackee Blockchain","headline":"Wake 2.0, development and testing framework for Solidity","author":{"@id":"https:\/\/ackee.xyz\/blog\/author\/aleksandra-yudina\/#author"},"publisher":{"@id":"https:\/\/ackee.xyz\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/Woke-2.0.png","width":1972,"height":1360},"datePublished":"2023-02-23T11:55:29+02:00","dateModified":"2024-05-16T13:24:21+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#webpage"},"isPartOf":{"@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#webpage"},"articleSection":"Announcements, Solidity, Wake, Developer tooling, Wake"},{"@type":"BreadcrumbList","@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/ackee.xyz\/blog#listItem","position":1,"name":"Home","item":"https:\/\/ackee.xyz\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/ackee.xyz\/blog\/category\/announcements\/#listItem","name":"Announcements"}},{"@type":"ListItem","@id":"https:\/\/ackee.xyz\/blog\/category\/announcements\/#listItem","position":2,"name":"Announcements","item":"https:\/\/ackee.xyz\/blog\/category\/announcements\/","nextItem":{"@type":"ListItem","@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#listItem","name":"Wake 2.0, development and testing framework for Solidity"},"previousItem":{"@type":"ListItem","@id":"https:\/\/ackee.xyz\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#listItem","position":3,"name":"Wake 2.0, development and testing framework for Solidity","previousItem":{"@type":"ListItem","@id":"https:\/\/ackee.xyz\/blog\/category\/announcements\/#listItem","name":"Announcements"}}]},{"@type":"Organization","@id":"https:\/\/ackee.xyz\/blog\/#organization","name":"Ackee Blockchain","description":"Blog & Research","url":"https:\/\/ackee.xyz\/blog\/","logo":{"@type":"ImageObject","url":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/cropped-ABCH_Logo_blue-black.png","@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#organizationLogo","width":5268,"height":825},"image":{"@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/ackee.xyz\/blog\/author\/aleksandra-yudina\/#author","url":"https:\/\/ackee.xyz\/blog\/author\/aleksandra-yudina\/","name":"Aleksandra Yudina","image":{"@type":"ImageObject","@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#authorImage","url":"https:\/\/abchprod.wpengine.com\/wp-content\/uploads\/2024\/08\/Frame-331-1-96x96.png","width":96,"height":96,"caption":"Aleksandra Yudina"}},{"@type":"WebPage","@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#webpage","url":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/","name":"Wake 2.0, development and testing framework for Solidity - Ackee Blockchain","description":"Woke 2.0, development and testing framework for Solidity With Woke 2.0, we introduced an updated version of our Python-based development and testing framework.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/ackee.xyz\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#breadcrumblist"},"author":{"@id":"https:\/\/ackee.xyz\/blog\/author\/aleksandra-yudina\/#author"},"creator":{"@id":"https:\/\/ackee.xyz\/blog\/author\/aleksandra-yudina\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/Woke-2.0.png","@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#mainImage","width":1972,"height":1360},"primaryImageOfPage":{"@id":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/#mainImage"},"datePublished":"2023-02-23T11:55:29+02:00","dateModified":"2024-05-16T13:24:21+02:00"},{"@type":"WebSite","@id":"https:\/\/ackee.xyz\/blog\/#website","url":"https:\/\/ackee.xyz\/blog\/","name":"Ackee Blockchain","description":"Blog & Research","inLanguage":"en-US","publisher":{"@id":"https:\/\/ackee.xyz\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Ackee Blockchain - Blog &amp; Research","og:type":"article","og:title":"Wake 2.0, development and testing framework for Solidity - Ackee Blockchain","og:description":"Woke 2.0, development and testing framework for Solidity With Woke 2.0, we introduced an updated version of our Python-based development and testing framework.","og:url":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/","og:image":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/cropped-ABCH_Logo_blue-black.png","og:image:secure_url":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/cropped-ABCH_Logo_blue-black.png","article:published_time":"2023-02-23T09:55:29+00:00","article:modified_time":"2024-05-16T11:24:21+00:00","twitter:card":"summary","twitter:title":"Wake 2.0, development and testing framework for Solidity - Ackee Blockchain","twitter:description":"Woke 2.0, development and testing framework for Solidity With Woke 2.0, we introduced an updated version of our Python-based development and testing framework.","twitter:image":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/cropped-ABCH_Logo_blue-black.png"},"aioseo_meta_data":{"post_id":"476","title":null,"description":"Woke 2.0, development and testing framework for Solidity With Woke 2.0, we introduced an updated version of our Python-based development and testing framework.","keywords":null,"keyphrases":{"focus":{"keyphrase":"Woke 2.0, development and testing framework for Solidity","score":49,"analysis":{"keyphraseInTitle":{"score":3,"maxScore":9,"error":1},"keyphraseInDescription":{"score":9,"maxScore":9,"error":0},"keyphraseLength":{"score":6,"maxScore":9,"error":1,"length":8},"keyphraseInURL":{"score":5,"maxScore":5,"error":0},"keyphraseInIntroduction":{"score":3,"maxScore":9,"error":1},"keyphraseInSubHeadings":[],"keyphraseInImageAlt":{"score":3,"maxScore":9,"error":1},"keywordDensity":{"score":0,"type":"low","maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"ai":null,"created":"2023-02-23 09:55:29","updated":"2024-05-16 11:27:22","breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/ackee.xyz\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/ackee.xyz\/blog\/category\/announcements\/\" title=\"Announcements\">Announcements<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tWake 2.0, development and testing framework for Solidity\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/ackee.xyz\/blog"},{"label":"Announcements","link":"https:\/\/ackee.xyz\/blog\/category\/announcements\/"},{"label":"Wake 2.0, development and testing framework for Solidity","link":"https:\/\/ackee.xyz\/blog\/woke-2-0-development-and-testing-framework-for-solidity\/"}],"featured_image_src":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/Woke-2.0-600x400.png","featured_image_src_square":"https:\/\/ackee.xyz\/blog\/wp-content\/uploads\/2023\/02\/Woke-2.0-600x600.png","author_info":{"display_name":"Aleksandra Yudina","author_link":"https:\/\/ackee.xyz\/blog\/author\/aleksandra-yudina\/"},"_links":{"self":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts\/476","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/comments?post=476"}],"version-history":[{"count":0,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/posts\/476\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/media\/477"}],"wp:attachment":[{"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/media?parent=476"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/categories?post=476"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ackee.xyz\/blog\/wp-json\/wp\/v2\/tags?post=476"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}